@kosdev-code/base-ui-components 0.0.3 → 0.1.0-dev.5191
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.
- package/components/atoms/alternating-status/alternating-status.d.ts +8 -0
- package/components/atoms/alternating-status/alternating-status.d.ts.map +1 -0
- package/components/atoms/alternating-status/index.d.ts +2 -0
- package/components/{molecules/details-page-layout → atoms/alternating-status}/index.d.ts.map +1 -1
- package/components/atoms/badge/badge.d.ts +15 -0
- package/components/atoms/badge/badge.d.ts.map +1 -0
- package/components/atoms/badge/index.d.ts +2 -0
- package/components/atoms/badge/index.d.ts.map +1 -0
- package/components/atoms/base-ui-components-context/base-ui-components-context.d.ts +13 -0
- package/components/atoms/base-ui-components-context/base-ui-components-context.d.ts.map +1 -0
- package/components/atoms/base-ui-components-context/index.d.ts +2 -0
- package/components/atoms/base-ui-components-context/index.d.ts.map +1 -0
- package/components/atoms/dialog/dialog.d.ts +1 -1
- package/components/atoms/dialog/hooks/use-dialog-context-value.d.ts +1 -1
- package/components/atoms/drawer/drawer.styles.d.ts +3 -3
- package/components/atoms/icon/common/types.d.ts +13 -0
- package/components/atoms/icon/common/types.d.ts.map +1 -0
- package/components/atoms/icon/icon.d.ts +1 -1
- package/components/atoms/icon/icon.d.ts.map +1 -1
- package/components/atoms/icon/index.d.ts +1 -1
- package/components/atoms/icon/index.d.ts.map +1 -1
- package/components/atoms/icon-button/icon-button.d.ts +1 -1
- package/components/atoms/icon-button/icon-button.d.ts.map +1 -1
- package/components/atoms/index.d.ts +4 -0
- package/components/atoms/index.d.ts.map +1 -1
- package/components/atoms/input/input.d.ts +1 -0
- package/components/atoms/input/input.d.ts.map +1 -1
- package/components/atoms/kos-logo/index.d.ts +2 -0
- package/components/atoms/kos-logo/index.d.ts.map +1 -0
- package/components/atoms/kos-logo/kos-logo.d.ts +7 -0
- package/components/atoms/kos-logo/kos-logo.d.ts.map +1 -0
- package/components/atoms/label/label.styles.d.ts +1 -1
- package/components/atoms/multi-select/common/styles.d.ts.map +1 -1
- package/components/atoms/multi-select/multi-select.d.ts +3 -3
- package/components/atoms/multi-select/multi-select.d.ts.map +1 -1
- package/components/atoms/resizable-panel-group/common/hooks/use-resizable-panel-group-context/use-resizable-panel-group-context.d.ts +1 -0
- package/components/atoms/resizable-panel-group/common/hooks/use-resizable-panel-group-context/use-resizable-panel-group-context.d.ts.map +1 -1
- package/components/atoms/resizable-panel-group/components/resizable-panel.d.ts +4 -3
- package/components/atoms/resizable-panel-group/components/resizable-panel.d.ts.map +1 -1
- package/components/atoms/resizable-panel-group/index.d.ts +1 -0
- package/components/atoms/resizable-panel-group/index.d.ts.map +1 -1
- package/components/atoms/resizable-panel-group/resizable-panel-group.d.ts.map +1 -1
- package/components/atoms/resizable-panel-group/resizable-panel-handle/resizable-panel-handle.d.ts.map +1 -1
- package/components/atoms/select/components/option.d.ts +3 -1
- package/components/atoms/select/components/option.d.ts.map +1 -1
- package/components/atoms/select/select.d.ts.map +1 -1
- package/components/atoms/text/text.d.ts +2 -2
- package/components/atoms/text/text.d.ts.map +1 -1
- package/components/common/components/StoryDecorator.d.ts.map +1 -1
- package/components/index.d.ts +1 -0
- package/components/index.d.ts.map +1 -1
- package/components/layouts/index.d.ts +2 -0
- package/components/layouts/index.d.ts.map +1 -0
- package/components/layouts/list-with-details-layout/index.d.ts +2 -0
- package/components/layouts/list-with-details-layout/index.d.ts.map +1 -0
- package/components/layouts/list-with-details-layout/list-with-details-layout.d.ts +17 -0
- package/components/layouts/list-with-details-layout/list-with-details-layout.d.ts.map +1 -0
- package/components/molecules/branded-header/branded-header-styles.d.ts +56 -0
- package/components/molecules/branded-header/branded-header-styles.d.ts.map +1 -0
- package/components/molecules/branded-header/branded-header.d.ts +2 -4
- package/components/molecules/branded-header/branded-header.d.ts.map +1 -1
- package/components/molecules/collapsible-artifact/components/artifact-version.d.ts.map +1 -1
- package/components/molecules/empty-list-message/empty-list-message.d.ts +8 -0
- package/components/molecules/empty-list-message/empty-list-message.d.ts.map +1 -0
- package/components/molecules/empty-list-message/index.d.ts +2 -0
- package/components/molecules/empty-list-message/index.d.ts.map +1 -0
- package/components/molecules/form/common/hooks/use-form-context.d.ts +1 -1
- package/components/molecules/form/common/hooks/use-form-context.d.ts.map +1 -1
- package/components/molecules/form/components/form-file-input.d.ts +8 -0
- package/components/molecules/form/components/form-file-input.d.ts.map +1 -0
- package/components/molecules/form/components/form-multi-select.d.ts +7 -0
- package/components/molecules/form/components/form-multi-select.d.ts.map +1 -0
- package/components/molecules/form/components/form-select.d.ts.map +1 -1
- package/components/molecules/form/components/form-submit.d.ts.map +1 -1
- package/components/molecules/form/components/index.d.ts +2 -0
- package/components/molecules/form/components/index.d.ts.map +1 -1
- package/components/molecules/index.d.ts +1 -1
- package/components/molecules/index.d.ts.map +1 -1
- package/components/molecules/list/common/samples/data-providers/custom-data-provider.d.ts.map +1 -1
- package/components/molecules/modal/common/styles/modal.styles.d.ts +4 -0
- package/components/molecules/modal/common/styles/modal.styles.d.ts.map +1 -1
- package/components/molecules/modal/confirm-delete-modal/components/confirm-delete-content.d.ts.map +1 -1
- package/components/molecules/modal/confirm-delete-modal/confirm-delete-modal.d.ts +2 -1
- package/components/molecules/modal/confirm-delete-modal/confirm-delete-modal.d.ts.map +1 -1
- package/components/molecules/modal/form-modal/form-modal.d.ts +2 -2
- package/components/molecules/modal/form-modal/form-modal.d.ts.map +1 -1
- package/components/molecules/modal/index.d.ts +1 -0
- package/components/molecules/modal/index.d.ts.map +1 -1
- package/components/molecules/modal/modal.d.ts +1 -1
- package/components/molecules/shell-menu/components/shell-menu-link.d.ts +1 -2
- package/components/molecules/shell-menu/components/shell-menu-link.d.ts.map +1 -1
- package/components/molecules/shell-menu/shell-menu.d.ts +3 -2
- package/components/molecules/shell-menu/shell-menu.d.ts.map +1 -1
- package/components/molecules/table/common/components/table-header.d.ts.map +1 -1
- package/components/molecules/table/common/components/table-td.d.ts +1 -4
- package/components/molecules/table/common/components/table-td.d.ts.map +1 -1
- package/components/molecules/table/common/types.d.ts +25 -1
- package/components/molecules/table/common/types.d.ts.map +1 -1
- package/components/molecules/table/components/table-tr.d.ts +2 -7
- package/components/molecules/table/components/table-tr.d.ts.map +1 -1
- package/components/molecules/table/helpers/create-column-helper.d.ts +9 -5
- package/components/molecules/table/helpers/create-column-helper.d.ts.map +1 -1
- package/components/molecules/table/index.d.ts +2 -0
- package/components/molecules/table/index.d.ts.map +1 -1
- package/components/molecules/table/storybook/data-provider.d.ts +1 -0
- package/components/molecules/table/storybook/data-provider.d.ts.map +1 -1
- package/components/molecules/table/table.d.ts +2 -18
- package/components/molecules/table/table.d.ts.map +1 -1
- package/components/molecules/table/virtual-table.d.ts +7 -0
- package/components/molecules/table/virtual-table.d.ts.map +1 -0
- package/helpers/get-error-message.d.ts +7 -0
- package/helpers/get-error-message.d.ts.map +1 -0
- package/helpers/index.d.ts +1 -0
- package/helpers/index.d.ts.map +1 -1
- package/helpers/validation/email-validation.d.ts +8 -0
- package/helpers/validation/email-validation.d.ts.map +1 -0
- package/helpers/validation/index.d.ts +1 -0
- package/helpers/validation/index.d.ts.map +1 -1
- package/helpers/validation/password-validation.d.ts +3 -2
- package/helpers/validation/password-validation.d.ts.map +1 -1
- package/index.cjs +2825 -0
- package/index.cjs.map +1 -0
- package/index.js +10834 -776
- package/index.js.map +1 -0
- package/package.json +24 -33
- package/style.css +1 -1
- package/styles/__deprecated__/old-styles/app-styles.d.ts +2 -2
- package/styles/__deprecated__/old-tokens/base/base-component.d.ts +2 -2
- package/styles/__deprecated__/old-tokens/base/base-generic.d.ts +1 -1
- package/styles/__deprecated__/old-tokens/base/base-semantic.d.ts +1 -1
- package/styles/__deprecated__/old-tokens/base/components/button/index.d.ts +1 -1
- package/styles/__deprecated__/old-tokens/base/components/kos-list/index.d.ts +1 -1
- package/styles/__deprecated__/old-tokens/base/components/kos-list-item/index.d.ts +1 -1
- package/styles/__deprecated__/old-tokens/base/components/kos-viewable-list-item/index.d.ts +1 -1
- package/styles/__deprecated__/old-tokens/index.d.ts +2 -2
- package/styles/tokens/common/local-token-helpers.d.ts +166 -0
- package/styles/tokens/common/local-token-helpers.d.ts.map +1 -0
- package/styles/tokens/component-tokens/badge/index.d.ts +17 -0
- package/styles/tokens/component-tokens/badge/index.d.ts.map +1 -0
- package/styles/tokens/component-tokens/branded-header/index.d.ts +1 -2
- package/styles/tokens/component-tokens/branded-header/index.d.ts.map +1 -1
- package/styles/tokens/component-tokens/index.d.ts +16 -2
- package/styles/tokens/component-tokens/index.d.ts.map +1 -1
- package/styles/tokens/component-tokens/modal/index.d.ts +1 -0
- package/styles/tokens/component-tokens/modal/index.d.ts.map +1 -1
- package/styles/tokens/index.d.ts +22 -6
- package/styles/tokens/index.d.ts.map +1 -1
- package/components/atoms/icon/types.d.ts +0 -6
- package/components/atoms/icon/types.d.ts.map +0 -1
- package/components/molecules/details-page-layout/details-page-layout.d.ts +0 -19
- package/components/molecules/details-page-layout/details-page-layout.d.ts.map +0 -1
- package/components/molecules/details-page-layout/index.d.ts +0 -2
- package/index.mjs +0 -17313
package/index.cjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../packages/libraries/base-ui-components/src/helpers/string-component-insert.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/common/token-getters.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/component-tokens/actionable-blurb/index.tsx","../../../../packages/libraries/base-ui-components/src/styles/tokens/component-tokens/app-shell/index.tsx","../../../../packages/libraries/base-ui-components/src/styles/tokens/component-tokens/artifact-drawer/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/component-tokens/checkbox/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/component-tokens/collapsible-artifact/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/component-tokens/collapsible-list/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/component-tokens/drawer/index.tsx","../../../../packages/libraries/base-ui-components/src/styles/tokens/component-tokens/form/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/component-tokens/horizontal-rule/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/component-tokens/icon-button/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/component-tokens/icon/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/component-tokens/image-config-page-header/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/component-tokens/input/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/component-tokens/link/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/component-tokens/modal/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/component-tokens/named-section/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/component-tokens/segmented/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/component-tokens/select/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/component-tokens/button/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/component-tokens/label/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/component-tokens/text/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/component-tokens/tab/index.tsx","../../../../packages/libraries/base-ui-components/src/styles/tokens/component-tokens/tag/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/component-tokens/textarea/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/component-tokens/toggle/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/component-tokens/version-list/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/component-tokens/combobox/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/component-tokens/radio-button/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/component-tokens/select-view-list/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/component-tokens/shell-menu/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/component-tokens/named-list-item/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/component-tokens/error-list-item/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/component-tokens/ingredient-card/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/component-tokens/branded-header/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/component-tokens/artifact-store-settings/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/component-tokens/table/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/component-tokens/resizable-panels/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/component-tokens/file-picker/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/component-tokens/shell-icon-button/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/component-tokens/multi-select/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/component-tokens/badge/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/component-tokens/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/global-tokens/color/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/global-tokens/typography/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/global-tokens/spacing/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/global-tokens/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/semantic-tokens/color/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/semantic-tokens/typography/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/semantic-tokens/spacing/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/semantic-tokens/index.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/common/local-token-helpers.ts","../../../../packages/libraries/base-ui-components/src/styles/tokens/index.tsx","../../../../packages/libraries/base-ui-components/src/styles/__deprecated__/old-tokens/base/components/kos-viewable-list-item/index.ts","../../../../packages/libraries/base-ui-components/src/styles/__deprecated__/old-tokens/base/components/button/index.ts","../../../../packages/libraries/base-ui-components/src/styles/__deprecated__/old-tokens/base/components/kos-list-item/index.ts","../../../../packages/libraries/base-ui-components/src/styles/__deprecated__/old-tokens/base/components/kos-list/index.ts","../../../../packages/libraries/base-ui-components/src/styles/__deprecated__/old-tokens/base/base-component.ts","../../../../packages/libraries/base-ui-components/src/styles/__deprecated__/old-tokens/base/base-generic.ts","../../../../packages/libraries/base-ui-components/src/styles/__deprecated__/old-tokens/base/base-semantic.ts","../../../../packages/libraries/base-ui-components/src/styles/__deprecated__/old-tokens/index.ts","../../../../packages/libraries/base-ui-components/src/styles/__deprecated__/old-styles/color.ts","../../../../packages/libraries/base-ui-components/src/styles/__deprecated__/old-styles/component.ts","../../../../packages/libraries/base-ui-components/src/styles/__deprecated__/old-styles/spacing.ts","../../../../packages/libraries/base-ui-components/src/styles/__deprecated__/old-styles/typography.ts","../../../../packages/libraries/base-ui-components/src/styles/__deprecated__/old-styles/app-styles.ts","../../../../packages/libraries/base-ui-components/src/components/utility/forward-ref-with-generic/forward-ref-with-generic.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/text/text.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/link/link.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/icon/common/types.ts","../../../../packages/libraries/base-ui-components/src/components/atoms/base-ui-components-context/base-ui-components-context.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/icon/icon.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/actionable-blurb/actionable-blurb.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/collapsible/hooks/useCollapsibleContext.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/collapsible/collapsible.tsx","../../../../node_modules/classnames/index.js","../../../../packages/libraries/base-ui-components/src/components/atoms/icon-button/icon-button.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/collapsible-artifact/components/collapsible-artifact-description.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/collapsible-artifact/collapsible-artifact.tsx","../../../../packages/libraries/base-ui-components/src/helpers/noop.ts","../../../../packages/libraries/base-ui-components/src/hooks/use-state-machine-reducer.ts","../../../../packages/libraries/base-ui-components/src/components/atoms/animate-presence/use-animate-presence.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/animate-presence/animate-presence.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/alternating-status/alternating-status.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/button/button.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/checkbox/checkbox.tsx","../../../../node_modules/toggle-selection/index.js","../../../../node_modules/copy-to-clipboard/index.js","../../../../packages/libraries/base-ui-components/src/components/atoms/copyable-text/copyable-text.tsx","../../../../packages/libraries/base-ui-components/src/components/common/hooks/use-decorated-floating-ui-trigger.ts","../../../../packages/libraries/base-ui-components/src/components/atoms/dialog/hooks/use-dialog-context-value.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/dialog/dialog.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/drawer/common/constants.ts","../../../../packages/libraries/base-ui-components/src/components/atoms/flex-handle/flex-handle.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/drawer/hooks/use-drawer-context.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/drawer/drawer.styles.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/drawer/drawer.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/drawer/components/drawer-header.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/horizontal-rule/horizontal-rule.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/input/input.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/input-search/input-search.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/label/label.styles.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/label/label.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/label/label-with-content.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/label/label-with-action.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/label/label-with-content-link.tsx","../../../../packages/libraries/base-ui-components/src/helpers/validation/validation-patterns.ts","../../../../packages/libraries/base-ui-components/src/helpers/validation/email-validation.ts","../../../../packages/libraries/base-ui-components/src/helpers/validation/password-validation.ts","../../../../packages/libraries/base-ui-components/src/helpers/get-error-message.ts","../../../../packages/libraries/base-ui-components/src/hooks/use-resize-observer.ts","../../../../packages/libraries/base-ui-components/src/components/atoms/middle-truncate-text/middle-truncate-text.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/pane-splitter/pane-splitter.tsx","../../../../packages/libraries/base-ui-components/src/utils/assert.ts","../../../../packages/libraries/base-ui-components/src/components/atoms/resizable-panel-group/common/hooks/use-resizable-panel-group-context/helpers/get-resize-handle-element.ts","../../../../packages/libraries/base-ui-components/src/components/atoms/resizable-panel-group/common/hooks/use-resizable-panel-group-context/helpers/get-panel-group-element.ts","../../../../packages/libraries/base-ui-components/src/components/atoms/resizable-panel-group/common/helpers/get-resize-event-coords.ts","../../../../packages/libraries/base-ui-components/src/components/atoms/resizable-panel-group/common/hooks/use-resizable-panel-group-context/helpers/get-resize-event-cursor-position.ts","../../../../packages/libraries/base-ui-components/src/components/atoms/resizable-panel-group/common/hooks/use-resizable-panel-group-context/helpers/calculate-delta-percentage.ts","../../../../packages/libraries/base-ui-components/src/components/atoms/resizable-panel-group/common/hooks/use-resizable-panel-group-context/helpers/get-resize-panel-element.ts","../../../../packages/libraries/base-ui-components/src/components/atoms/resizable-panel-group/common/hooks/use-resizable-panel-group-context/helpers/get-resize-panels.ts","../../../../packages/libraries/base-ui-components/src/components/atoms/resizable-panel-group/common/hooks/use-resizable-panel-group-context/use-resizable-panel-group-context.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/resizable-panel-group/resizable-panel-group.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/resizable-panel-group/components/resizable-panel.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/resizable-panel-group/resizable-panel-handle/register-handle/helpers/cursor.ts","../../../../packages/libraries/base-ui-components/src/components/atoms/resizable-panel-group/resizable-panel-handle/register-handle/helpers/intersects.ts","../../../../packages/libraries/base-ui-components/src/components/atoms/resizable-panel-group/resizable-panel-handle/register-handle/helpers/stacking-order.ts","../../../../packages/libraries/base-ui-components/src/components/atoms/resizable-panel-group/resizable-panel-handle/register-handle/register-handle.ts","../../../../packages/libraries/base-ui-components/src/components/atoms/resizable-panel-group/resizable-panel-handle/resizable-panel-handle.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/screen-overlay/screen-overlay.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/common/constants.ts","../../../../packages/libraries/base-ui-components/src/components/atoms/select/select.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/select/components/option.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/select/action-select.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/shell-icon-button/shell-icon-button.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/tab/common/hooks/use-tab-context.ts","../../../../packages/libraries/base-ui-components/src/components/atoms/tab/tab.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/tab/components/tab-trigger.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/tab/components/tab-trigger-list.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/tab/components/tab-pane.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/tag/tag.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/tag-remove/tag-remove.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/text-highlight/text-highlight.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/badge/badge.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/textarea/textarea.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/toggle/toggle.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/tooltip/base-tooltip.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/tooltip/light-tooltip/light-tooltip.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/tooltip/alert-tooltip/alert-tooltip.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/tooltip/dark-tooltip/dark-tooltip.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/tooltip/error-tooltip/error-tooltip.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/tooltip/selector-tooltip/selector-tooltip.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/tooltip/tooltip.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/multi-select/common/use-multi-select-context.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/multi-select/common/styles.ts","../../../../packages/libraries/base-ui-components/src/components/atoms/multi-select/components/multi-select-all-item.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/multi-select/components/multi-select-item.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/multi-select/components/selected-multi-select-item.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/multi-select/multi-select.tsx","../../../../packages/libraries/base-ui-components/src/components/atoms/kos-logo/kos-logo.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/collapsible-artifact/components/artifact-version.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/collapsible-list/collapsible-list.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/combobox/components/combo-box-input.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/combobox/components/combo-box-option-label.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/combobox/combo-box.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/form/hooks/useWrapFormForWhiteSpaceValidation.ts","../../../../packages/libraries/base-ui-components/src/components/molecules/form/form.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/requirements-list/requirements-list.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/form/common/hooks/use-form-context.ts","../../../../packages/libraries/base-ui-components/src/components/molecules/form/components/password-requirements-list.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/form/common/components/form-label.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/form/common/components/form-error-message.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/form/common/form.styles.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/form/components/form-toggle.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/form/components/form-text-area.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/form/components/form-submit.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/drop-down/drop-down.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/form/components/form-select.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/form/components/form-input.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/form/components/form-field.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/form/components/form-check.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/form/components/form-access-toggles.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/form/components/form-name-input.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/form/components/form-combo-box.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/form/components/form-file-input.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/form/components/form-multi-select.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/list/hooks/useLoadDataProvider.ts","../../../../packages/libraries/base-ui-components/src/components/molecules/list/common/contexts/select-list-context.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/list/common/contexts/list-context.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/list/common/data-providers/base-observable-data-provider.ts","../../../../packages/libraries/base-ui-components/src/components/molecules/list/common/data-providers/observable-data-provider.ts","../../../../packages/libraries/base-ui-components/src/components/molecules/list/group-list/grouped-observable-data-provider.ts","../../../../packages/libraries/base-ui-components/src/components/molecules/list/common/data-providers/property-data-provider.ts","../../../../packages/libraries/base-ui-components/src/components/molecules/list/common/helpers.ts","../../../../packages/libraries/base-ui-components/src/components/molecules/list/list.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/list/select-list/select-list.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/list/group-list/group-list.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/list/common/templates/group/named-collapsible-group.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/list/common/templates/item/check-list-item.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/list/common/templates/item/description-list-item.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/list/common/templates/item/named-list-item.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/list/common/templates/item/table-named-list-item.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/list/group-list/group-list-tools.ts","../../../../packages/libraries/base-ui-components/src/components/molecules/list/tree-list/tree-data-provider.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/list/tree-list/common/hooks/useTreeContext.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/list/tree-list/helpers/is-branch-factory.ts","../../../../packages/libraries/base-ui-components/src/components/molecules/list/tree-list/tree-list.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/list/tree-list/templates/anonymous-branch.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/list/tree-list/templates/named-collapsible-branch.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/virtual-list/virtual-list.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/list/virtualized-list/virtualized-list.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/list/virtualized-select-list/virtualized-select-list.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/modal/common/styles/modal.styles.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/modal/common/components/modal-layout.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/modal/status-modal/status-modal.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/modal/confirm-modal/confirm-modal.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/modal/confirm-delete-modal/components/confirm-delete-header.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/modal/confirm-delete-modal/components/confirm-delete-content.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/modal/confirm-delete-modal/components/confirm-delete-footer.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/modal/confirm-delete-modal/confirm-delete-modal.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/modal/form-modal/form-modal.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/modal/modal.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/named-section/common/style.ts","../../../../packages/libraries/base-ui-components/src/components/molecules/named-section/components/collapsible-named-section-header.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/named-section/named-section.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/named-section/components/named-section-header.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/page-header/page-header.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/select-view-list/common/hooks/use-select-view-list-context.ts","../../../../packages/libraries/base-ui-components/src/components/atoms/radio-button/radio-button.tsx","../../../../packages/libraries/base-ui-components/src/utils/bytes.ts","../../../../packages/libraries/base-ui-components/src/utils/sticky-observer.ts","../../../../packages/libraries/base-ui-components/src/utils/normalize-path-display.ts","../../../../packages/libraries/base-ui-components/src/components/molecules/select-view-list/components/select-view-list-item.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/select-view-list/select-view-list.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/item-selection-list/common/hooks/use-item-selection-list-context.ts","../../../../packages/libraries/base-ui-components/src/components/molecules/item-selection-list/components/item-selection-list-header.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/item-selection-list/components/item-selection-list-item-template.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/item-selection-list/item-selection-list.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/item-selection-list/common/data-provider/item-selection-list-data-provider.ts","../../../../packages/libraries/base-ui-components/src/components/molecules/dropdown-menu/dropdown-menu.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/shell-menu/shell-menu.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/shell-menu/components/shell-menu-link.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/holder-list-item-template/holder-list-item-template.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/branded-header/types.ts","../../../../packages/libraries/base-ui-components/src/components/molecules/branded-header/branded-header-styles.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/branded-header/branded-header.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/table/common/context/use-table-context.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/table/common/style/styled-td.ts","../../../../packages/libraries/base-ui-components/src/components/molecules/table/common/components/table-td.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/table/common/style/styled-tr.ts","../../../../packages/libraries/base-ui-components/src/components/molecules/table/components/table-tr.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/table/table.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/table/common/components/table-header.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/table/helpers/create-column-helper.tsx","../../../../node_modules/@tanstack/virtual-core/dist/esm/utils.js","../../../../node_modules/@tanstack/virtual-core/dist/esm/index.js","../../../../node_modules/@tanstack/react-virtual/dist/esm/index.js","../../../../packages/libraries/base-ui-components/src/components/molecules/table/virtual-table.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/screen-overlay-with-action/screen-overlay-with-action.tsx","../../../../node_modules/@date-fns/tz/tzName/index.js","../../../../node_modules/@date-fns/tz/tzOffset/index.js","../../../../node_modules/@date-fns/tz/date/mini.js","../../../../node_modules/@date-fns/tz/date/index.js","../../../../node_modules/react-day-picker/node_modules/date-fns/locale/en-US/_lib/formatDistance.js","../../../../node_modules/react-day-picker/node_modules/date-fns/locale/_lib/buildFormatLongFn.js","../../../../node_modules/react-day-picker/node_modules/date-fns/locale/en-US/_lib/formatLong.js","../../../../node_modules/react-day-picker/node_modules/date-fns/locale/en-US/_lib/formatRelative.js","../../../../node_modules/react-day-picker/node_modules/date-fns/locale/_lib/buildLocalizeFn.js","../../../../node_modules/react-day-picker/node_modules/date-fns/locale/en-US/_lib/localize.js","../../../../node_modules/react-day-picker/node_modules/date-fns/locale/_lib/buildMatchFn.js","../../../../node_modules/react-day-picker/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js","../../../../node_modules/react-day-picker/node_modules/date-fns/locale/en-US/_lib/match.js","../../../../node_modules/react-day-picker/node_modules/date-fns/locale/en-US.js","../../../../node_modules/react-day-picker/dist/esm/helpers/getBroadcastWeeksInMonth.js","../../../../node_modules/react-day-picker/dist/esm/helpers/startOfBroadcastWeek.js","../../../../node_modules/react-day-picker/dist/esm/helpers/endOfBroadcastWeek.js","../../../../node_modules/react-day-picker/dist/esm/classes/DateLib.js","../../../../node_modules/react-day-picker/dist/esm/classes/CalendarDay.js","../../../../node_modules/react-day-picker/dist/esm/classes/CalendarMonth.js","../../../../node_modules/react-day-picker/dist/esm/classes/CalendarWeek.js","../../../../node_modules/react-day-picker/dist/esm/components/Button.js","../../../../node_modules/react-day-picker/dist/esm/components/CaptionLabel.js","../../../../node_modules/react-day-picker/dist/esm/components/Chevron.js","../../../../node_modules/react-day-picker/dist/esm/components/Day.js","../../../../node_modules/react-day-picker/dist/esm/components/DayButton.js","../../../../node_modules/react-day-picker/dist/esm/UI.js","../../../../node_modules/react-day-picker/dist/esm/components/Dropdown.js","../../../../node_modules/react-day-picker/dist/esm/components/DropdownNav.js","../../../../node_modules/react-day-picker/dist/esm/components/Footer.js","../../../../node_modules/react-day-picker/dist/esm/components/Month.js","../../../../node_modules/react-day-picker/dist/esm/components/MonthCaption.js","../../../../node_modules/react-day-picker/dist/esm/components/MonthGrid.js","../../../../node_modules/react-day-picker/dist/esm/components/Months.js","../../../../node_modules/react-day-picker/dist/esm/useDayPicker.js","../../../../node_modules/react-day-picker/dist/esm/components/MonthsDropdown.js","../../../../node_modules/react-day-picker/dist/esm/components/Nav.js","../../../../node_modules/react-day-picker/dist/esm/components/NextMonthButton.js","../../../../node_modules/react-day-picker/dist/esm/components/Option.js","../../../../node_modules/react-day-picker/dist/esm/components/PreviousMonthButton.js","../../../../node_modules/react-day-picker/dist/esm/components/Root.js","../../../../node_modules/react-day-picker/dist/esm/components/Select.js","../../../../node_modules/react-day-picker/dist/esm/components/Week.js","../../../../node_modules/react-day-picker/dist/esm/components/Weekday.js","../../../../node_modules/react-day-picker/dist/esm/components/Weekdays.js","../../../../node_modules/react-day-picker/dist/esm/components/WeekNumber.js","../../../../node_modules/react-day-picker/dist/esm/components/WeekNumberHeader.js","../../../../node_modules/react-day-picker/dist/esm/components/Weeks.js","../../../../node_modules/react-day-picker/dist/esm/components/YearsDropdown.js","../../../../node_modules/react-day-picker/dist/esm/utils/rangeIncludesDate.js","../../../../node_modules/react-day-picker/dist/esm/utils/typeguards.js","../../../../node_modules/react-day-picker/dist/esm/utils/dateMatchModifiers.js","../../../../node_modules/react-day-picker/dist/esm/helpers/createGetModifiers.js","../../../../node_modules/react-day-picker/dist/esm/helpers/getClassNamesForModifiers.js","../../../../node_modules/react-day-picker/dist/esm/helpers/getComponents.js","../../../../node_modules/react-day-picker/dist/esm/helpers/getDataAttributes.js","../../../../node_modules/react-day-picker/dist/esm/helpers/getDefaultClassNames.js","../../../../node_modules/react-day-picker/dist/esm/formatters/formatCaption.js","../../../../node_modules/react-day-picker/dist/esm/formatters/formatDay.js","../../../../node_modules/react-day-picker/dist/esm/formatters/formatMonthDropdown.js","../../../../node_modules/react-day-picker/dist/esm/formatters/formatWeekdayName.js","../../../../node_modules/react-day-picker/dist/esm/formatters/formatWeekNumber.js","../../../../node_modules/react-day-picker/dist/esm/formatters/formatWeekNumberHeader.js","../../../../node_modules/react-day-picker/dist/esm/formatters/formatYearDropdown.js","../../../../node_modules/react-day-picker/dist/esm/helpers/getFormatters.js","../../../../node_modules/react-day-picker/dist/esm/helpers/getMonthOptions.js","../../../../node_modules/react-day-picker/dist/esm/helpers/getStyleForModifiers.js","../../../../node_modules/react-day-picker/dist/esm/helpers/getWeekdays.js","../../../../node_modules/react-day-picker/dist/esm/helpers/getYearOptions.js","../../../../node_modules/react-day-picker/dist/esm/labels/labelDayButton.js","../../../../node_modules/react-day-picker/dist/esm/labels/labelGrid.js","../../../../node_modules/react-day-picker/dist/esm/labels/labelGridcell.js","../../../../node_modules/react-day-picker/dist/esm/labels/labelMonthDropdown.js","../../../../node_modules/react-day-picker/dist/esm/labels/labelNav.js","../../../../node_modules/react-day-picker/dist/esm/labels/labelNext.js","../../../../node_modules/react-day-picker/dist/esm/labels/labelPrevious.js","../../../../node_modules/react-day-picker/dist/esm/labels/labelWeekday.js","../../../../node_modules/react-day-picker/dist/esm/labels/labelWeekNumber.js","../../../../node_modules/react-day-picker/dist/esm/labels/labelWeekNumberHeader.js","../../../../node_modules/react-day-picker/dist/esm/labels/labelYearDropdown.js","../../../../node_modules/react-day-picker/dist/esm/useAnimation.js","../../../../node_modules/react-day-picker/dist/esm/helpers/getDates.js","../../../../node_modules/react-day-picker/dist/esm/helpers/getDays.js","../../../../node_modules/react-day-picker/dist/esm/helpers/getDisplayMonths.js","../../../../node_modules/react-day-picker/dist/esm/helpers/getInitialMonth.js","../../../../node_modules/react-day-picker/dist/esm/helpers/getMonths.js","../../../../node_modules/react-day-picker/dist/esm/helpers/getNavMonth.js","../../../../node_modules/react-day-picker/dist/esm/helpers/getNextMonth.js","../../../../node_modules/react-day-picker/dist/esm/helpers/getPreviousMonth.js","../../../../node_modules/react-day-picker/dist/esm/helpers/getWeeks.js","../../../../node_modules/react-day-picker/dist/esm/helpers/useControlledValue.js","../../../../node_modules/react-day-picker/dist/esm/useCalendar.js","../../../../node_modules/react-day-picker/dist/esm/helpers/calculateFocusTarget.js","../../../../node_modules/react-day-picker/dist/esm/helpers/getFocusableDate.js","../../../../node_modules/react-day-picker/dist/esm/helpers/getNextFocus.js","../../../../node_modules/react-day-picker/dist/esm/useFocus.js","../../../../node_modules/react-day-picker/dist/esm/selection/useMulti.js","../../../../node_modules/react-day-picker/dist/esm/utils/addToRange.js","../../../../node_modules/react-day-picker/dist/esm/utils/rangeContainsDayOfWeek.js","../../../../node_modules/react-day-picker/dist/esm/utils/rangeOverlaps.js","../../../../node_modules/react-day-picker/dist/esm/utils/rangeContainsModifiers.js","../../../../node_modules/react-day-picker/dist/esm/selection/useRange.js","../../../../node_modules/react-day-picker/dist/esm/selection/useSingle.js","../../../../node_modules/react-day-picker/dist/esm/useSelection.js","../../../../node_modules/react-day-picker/dist/esm/DayPicker.js","../../../../packages/libraries/base-ui-components/src/components/molecules/date-picker/date-picker.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/menu-wrapper/menu-wrapper.tsx","../../../../packages/libraries/base-ui-components/src/components/molecules/empty-list-message/empty-list-message.tsx","../../../../packages/libraries/base-ui-components/src/components/layouts/list-with-details-layout/list-with-details-layout.tsx","../../../../packages/libraries/base-ui-components/src/hooks/use-drag-drop.tsx"],"sourcesContent":["import { ReactNode, type ReactElement } from \"react\";\n\nconst escapeRegExp = (toEscape: string) => {\n const escapableChars = /[\\\\^$.*+?()[\\]{}|]/g;\n const hasEscapableChar = RegExp(escapableChars.source);\n\n return hasEscapableChar.test(toEscape)\n ? toEscape.replace(escapableChars, \"\\\\$&\")\n : toEscape;\n};\n\nconst isRegExp = (toTest: string | RegExp): toTest is RegExp =>\n toTest instanceof RegExp;\n\nconst isString = (toTest: string | RegExp | ReactNode): toTest is string =>\n typeof toTest === \"string\";\n\nconst flatten = (\n toFlatten: (string | ReactNode)[][] | (string | ReactNode)[]\n) => {\n let newArray: (string | ReactNode)[] = [];\n\n toFlatten.forEach((item) => {\n if (Array.isArray(item)) {\n newArray = newArray.concat(item);\n } else {\n if (item) {\n newArray.push(item);\n }\n }\n });\n\n return newArray;\n};\n\nconst replaceString = (\n source: string,\n _toMatch: string | RegExp,\n callback: (match: string, index: number) => ReactNode\n) => {\n if (source === \"\" || _toMatch === \"\") return source;\n\n let toMatch = _toMatch;\n\n if (!isRegExp(toMatch)) {\n toMatch = new RegExp(\"(\" + escapeRegExp(toMatch) + \")\", \"gi\");\n }\n\n const result: ReactNode[] = source.split(toMatch);\n\n // Matches will be every odd string in the array, iterate over them and\n // call the callback to insert our component for each match.\n for (let i = 1, length = result.length; i < length; i += 2) {\n if (result[i] === undefined || result[i - 1] === undefined) {\n console.warn(\n \"Encountered undefined value during string replacement. Your RegExp may not be working the way you expect.\"\n );\n continue;\n }\n\n result[i] = callback(result[i] as string, i);\n }\n\n return result;\n};\n\nexport const stringComponentInsert = (\n _source: string | (string | ReactNode)[],\n toMatch: string | RegExp,\n callback: (match: string, index: number) => string | ReactElement\n) => {\n let source = _source;\n if (!Array.isArray(source)) source = [source];\n\n return flatten(\n source.map((x) => (isString(x) ? replaceString(x, toMatch, callback) : x))\n );\n};\n","import { SemanticTokenString, GlobalTokenString } from \"./types\";\n\n// Sometimes we dont want to wrap the value in a var\nexport const returnAsKey = (key: string, asKey?: boolean) =>\n !asKey ? `var(${key})` : key;\n\n// Token format is loosely based on whats described in this article: https://bootcamp.uxdesign.cc/what-are-design-tokens-828c67410069\n\nexport const getGlobalToken = (key: GlobalTokenString, asKey?: boolean) =>\n returnAsKey(`--studio-g-${key}`, asKey);\n\nexport const getSemanticToken = (key: SemanticTokenString, asKey?: boolean) =>\n returnAsKey(`--studio-s-${key}`, asKey);\n","import { getSemanticToken as st } from \"../../common/token-getters\";\n\nexport const ACTIONABLE_BLURB_TOKENS = {\n \"actionable-blurb\": {\n \"row-gap\": st(\"spacing-4\"),\n \"icon-column-width\": st(\"spacing-20\"),\n },\n};\n","import { getSemanticToken as st } from \"../../common/token-getters\";\n\nexport const APP_SHELL_TOKENS = {\n \"app-shell\": {\n \"bg-default\": st(\"color-grey80\"),\n \"bg-offline\": st(\"color-grey70\"),\n \"bg-locked\": st(\"color-grey60\"),\n color: st(\"color-white\"),\n },\n};\n","import { getSemanticToken as st } from \"../../common/token-getters\";\n\nexport const ARTIFACT_DRAWER_TOKENS = {\n \"artifact-drawer\": {\n \"background-color\": st(\"color-grey10\"),\n \"border-color\": st(\"color-grey20\"),\n \"border-width\": st(\"border-sm\"),\n \"padding-x\": st(\"spacing-16\"),\n \"branch-padding-x\": st(\"spacing-8\"),\n \"artifact-list-y-padding\": st(\"spacing-10\"),\n \"artifact-items-gap\": st(\"spacing-10\"),\n \"version-items-gap\": st(\"spacing-8\"),\n \"version-list-padding\": st(\"spacing-8\"),\n },\n};\n","import { getSemanticToken as st } from \"../../common/token-getters\";\n\nexport const CHECKBOX_TOKENS = {\n checkbox: {\n \"background-color\": st(\"color-white\"),\n \"border-color\": st(\"color-grey30\"),\n \"background-color-disabled\": st(\"color-grey15\"),\n \"background-color-checked\": st(\"color-primary\"),\n \"border-color-checked\": st(\"color-primary\"),\n \"background-color-checked-disabled\": st(\"color-additional3\"),\n \"border-color-checked-disabled\": st(\"color-additional3\"),\n size: \"14px\",\n \"border-radius\": st(\"spacing-2\"),\n \"border-width\": st(\"border-sm\"),\n },\n};\n","import { getSemanticToken as st } from \"../../common/token-getters\";\n\nexport const COLLAPSIBLE_ARTIFACT_TOKENS = {\n \"collapsible-artifact\": {\n \"background-color\": st(\"color-white\"),\n \"border-color\": st(\"color-grey20\"),\n \"border-radius\": st(\"spacing-6\"),\n \"border-width\": st(\"border-xsm\"),\n \"button-left-or-right\": st(\"spacing-4\"),\n \"button-top\": \"3px\",\n \"name-and-desc-spacing\": st(\"spacing-2\"),\n \"name-and-selected-spacing\": st(\"spacing-8\"),\n padding: `${st(\"spacing-6\")} ${st(\"spacing-8\")}`,\n },\n \"collapsible-artifact-version\": {\n \"background-color-hover\": st(\"color-grey20\"),\n \"background-color-inherited\": \"#9747FF12\",\n \"background-color-selected\": st(\"color-additional3\"),\n \"background-color\": st(\"color-grey10\"),\n \"border-color-hover\": st(\"color-grey30\"),\n \"border-color-inherited\": \"#9747FF33\",\n \"border-color-selected\": st(\"color-primary\"),\n \"border-color\": st(\"color-grey20\"),\n \"border-radius\": st(\"spacing-2\"),\n \"border-width\": st(\"border-sm\"),\n padding: `${st(\"spacing-6\")} ${st(\"spacing-8\")}`,\n },\n};\n","import { getSemanticToken as st } from \"../../common/token-getters\";\n\nexport const COLLAPSIBLE_LIST_TOKENS = {\n \"collapsible-list-container\": {\n \"border-radius\": st(\"spacing-2\"),\n \"border-width\": \"0.5px\",\n \"border-color\": st(\"color-grey20\"),\n },\n \"collapsible-list-header-container\": {\n \"background-color\": st(\"color-grey10\"),\n gap: st(\"spacing-8\"),\n padding: \"7px 8px\",\n },\n \"collapsible-list-toggled-container\": {\n \"background-color\": st(\"color-white\"),\n gap: st(\"spacing-8\"),\n padding: st(\"spacing-8\"),\n },\n};\n","import { getSemanticToken as st } from \"../../common/token-getters\";\n\nexport const DRAWER_TOKENS = {\n drawer: {\n \"header-height\": st(\"spacing-30\"),\n \"header-bg\": st(\"color-grey10\"),\n \"header-border-size\": \"1px\",\n \"header-border-color\": st(\"color-grey20\"),\n \"header-x-padding\": st(\"spacing-10\"),\n \"border-width\": \"1px\",\n \"border-color\": st(\"color-grey20\"),\n \"left-drop-shadow\": \"4px 0px 8px -1px rgba(0,0,0,0.2)\",\n \"right-drop-shadow\": \"-4px 0px 8px -1px rgba(0,0,0,0.2)\",\n },\n};\n","import { getSemanticToken as st } from \"../../common/token-getters\";\n\nexport const FORM_TOKENS = {\n form: {\n \"access-toggle-gap\": st(\"spacing-16\"),\n \"access-toggle-height\": st(\"spacing-36\"),\n \"error-message-top-margin\": st(\"spacing-4\"),\n \"label-column-gap\": st(\"spacing-16\"),\n \"label-error-color\": st(\"color-red\"),\n \"label-font-family\": st(\"font-family-default\"),\n \"label-font-size\": st(\"font-size-med\"),\n \"label-font-weight\": st(\"font-weight-normal\"),\n \"label-height\": \"14px\",\n \"label-line-height\": st(\"line-height-default\"),\n \"label-star-padding\": st(\"spacing-4\"),\n \"label-width\": \"112px\",\n \"label-area-padding\": `${st(\"spacing-7\")} 0`,\n },\n};\n","import { getSemanticToken } from \"../../common/token-getters\";\n\nexport const HORIZONTAL_RULE_TOKENS = {\n \"horizontal-rule\": {\n \"border-width\": \"0.5px\",\n \"border-color\": getSemanticToken(\"color-grey20\"),\n },\n} as const;\n","import { getSemanticToken as st } from \"../../common/token-getters\";\n\nexport const ICON_BUTTON_TOKENS = {\n \"icon-button\": {\n padding: \"0\", // st(\"spacing-4\"),\n \"border-radius\": st(\"spacing-2\"),\n \"background-color\": \"transparent\",\n \"border-color\": \"transparent\",\n cursor: \"pointer\",\n \"disabled-cursor\": \"not-allowed\",\n // Badge Tokens\n \"badge-fill-black\": st(\"color-black\"),\n \"badge-fill-blue\": st(\"color-primary\"),\n \"badge-fill-green\": st(\"color-green\"),\n \"badge-fill-grey\": st(\"color-grey50\"),\n \"badge-fill-orange\": st(\"color-orange\"),\n \"badge-fill-purple\": st(\"color-purple\"),\n \"badge-fill-red\": st(\"color-red\"),\n \"badge-fill-white\": st(\"color-white\"),\n \"badge-fill-yellow\": st(\"color-yellow\"),\n \"badge-right\": \"1px\",\n \"badge-top\": \"1px\",\n \"active-background-color\": \"rgba(255, 255, 255, 0.1)\",\n },\n};\n","import { getSemanticToken as st } from \"../../common/token-getters\";\n\nexport const ICON_TOKENS = {\n icon: {\n \"fill-black\": st(\"color-black\"),\n \"fill-blue\": st(\"color-primary\"),\n \"fill-green\": st(\"color-green\"),\n \"fill-grey\": st(\"color-grey50\"),\n \"fill-orange\": st(\"color-orange\"),\n \"fill-purple\": st(\"color-purple\"),\n \"fill-red\": st(\"color-red\"),\n \"fill-white\": st(\"color-white\"),\n \"fill-yellow\": st(\"color-yellow\"),\n \"size-lrg\": st(\"spacing-18\"),\n \"size-med\": st(\"spacing-16\"),\n \"size-sm\": st(\"spacing-14\"),\n \"size-xlrg\": st(\"spacing-20\"),\n \"size-xsm\": st(\"spacing-12\"),\n \"size-xxlrg\": st(\"spacing-22\"),\n \"size-xxsm\": st(\"spacing-10\"),\n },\n};\n","import { getSemanticToken as st } from \"../../common/token-getters\";\n\nexport const IMAGE_CONFIG_PAGE_HEADER_TOKENS = {\n \"image-config-page-header\": {\n gap: st(\"spacing-16\"),\n \"padding-bottom\": st(\"spacing-12\"),\n \"title-gap\": st(\"spacing-8\"),\n bg: st(\"color-white\"),\n },\n};\n","import { getSemanticToken as st } from \"../../common/token-getters\";\n\nexport const INPUT_TOKENS = {\n input: {\n \"background-color-disabled\": st(\"color-grey10\"),\n \"background-color\": st(\"color-white\"),\n \"border-color-active\": st(\"color-black\"),\n \"border-color-invalid\": st(\"color-red\"),\n \"border-color\": st(\"color-grey30\"),\n \"border-radius\": st(\"spacing-2\"),\n \"border-width\": st(\"border-sm\"),\n \"color-disabled\": st(\"color-grey30\"),\n \"font-family\": st(\"font-family-default\"),\n \"font-size-small\": st(\"font-size-sm\"),\n \"font-size\": st(\"font-size-med\"),\n \"font-weight\": st(\"font-weight-normal\"),\n \"icon-left\": st(\"spacing-8\"),\n \"line-height\": st(\"line-height-default\"),\n \"padding-left-icon\": st(\"spacing-28\"),\n \"padding-right-icon\": st(\"spacing-28\"),\n \"padding-x\": st(\"spacing-8\"),\n \"padding-y-small\": \"2px\",\n \"padding-y\": st(\"spacing-7\"),\n color: st(\"color-black\"),\n height: \"28px\",\n },\n};\n","import { getSemanticToken as st } from \"../../common/token-getters\";\n\nexport const LINK_TOKENS = {\n link: {\n \"font-size-med\": st(\"font-size-med\"),\n \"font-size-sm\": st(\"font-size-sm\"),\n \"font-size-lrg\": st(\"font-size-lrg\"),\n \"font-size-xlrg\": st(\"font-size-xlrg\"),\n \"font-family\": st(\"font-family-default\"),\n \"font-weight\": st(\"font-weight-bold\"),\n \"line-height\": st(\"line-height-default\"),\n color: st(\"color-primary\"),\n \"color-hover\": st(\"color-additional1\"),\n \"color-active\": st(\"color-additional2\"),\n \"color-disabled\": st(\"color-grey30\"),\n },\n};\n","import { getSemanticToken as st } from \"../../common/token-getters\";\n\nexport const MODAL_TOKENS = {\n modal: {\n \"overlay-background\": \"rgba(0, 0, 0, 0.8)\",\n \"background-color\": st(\"color-white\"),\n headerPadding: st(\"spacing-10\"),\n headerGap: st(\"spacing-8\"),\n contentYPadding: st(\"spacing-10\"),\n contentXPadding: st(\"spacing-12\"),\n footerYPadding: st(\"spacing-10\"),\n footerXPadding: st(\"spacing-12\"),\n footerGap: st(\"spacing-8\"),\n \"border-width\": st(\"border-sm\"),\n \"border-color\": st(\"color-grey20\"),\n \"base-content-width\": \"400xp\",\n },\n};\n","import { getSemanticToken } from \"../../common/token-getters\";\n\nexport const NAMED_SECTION_TOKENS = {\n \"named-section\": {\n \"border-radius\": \"2px\",\n \"border-width\": \"0.5px\",\n \"selected-border-width\": \"2px\",\n \"hover-border-width\": getSemanticToken(\"border-sm\"),\n \"border-color\": getSemanticToken(\"color-grey20\"),\n \"selected-border-color\": getSemanticToken(\"color-primary\"),\n },\n \"named-section-header\": {\n bg: getSemanticToken(\"color-grey10\"),\n \"border-width\": \"0.5px\",\n \"border-color\": getSemanticToken(\"color-grey20\"),\n \"border-radius\": \"2px\",\n padding: \"8px 10px\",\n gap: getSemanticToken(\"spacing-8\"),\n \"row-gap\": getSemanticToken(\"spacing-4\"),\n },\n} as const;\n","import { getSemanticToken } from \"../../common/token-getters\";\n\nexport const SEGMENTED_TOKENS = {\n segmented: {\n \"border-width\": getSemanticToken(\"border-sm\"),\n \"border-radius\": getSemanticToken(\"spacing-2\"),\n padding: getSemanticToken(\"spacing-2\"),\n \"background-color\": getSemanticToken(\"color-grey15\"),\n \"border-color\": getSemanticToken(\"color-grey20\"),\n \"button-color\": getSemanticToken(\"color-grey60\"),\n \"button-color-disabled\": getSemanticToken(\"color-grey40\"),\n \"button-background-color\": getSemanticToken(\"color-grey15\"),\n \"button-background-color-hover\": getSemanticToken(\"color-grey20\"),\n \"button-background-color-active\": getSemanticToken(\"color-grey40\"),\n \"button-padding-y\": \"5px\",\n \"button-padding-x\": \"11px\",\n \"button-border-width\": getSemanticToken(\"border-sm\"),\n \"button-border-color\": \"transparent\",\n \"button-font-size\": getSemanticToken(\"font-size-med\"),\n \"button-font-weight\": getSemanticToken(\"font-weight-normal\"),\n \"button-font-family\": getSemanticToken(\"font-family-default\"),\n \"button-gap\": getSemanticToken(\"spacing-4\"),\n \"indicator-background-color\": getSemanticToken(\"color-white\"),\n \"indicator-color\": getSemanticToken(\"color-black\"),\n },\n} as const;\n","import { getSemanticToken as st } from \"../../common/token-getters\";\n\nexport const SELECT_TOKENS = {\n select: {\n \"font-size\": st(\"font-size-med\"),\n \"border-size\": st(\"border-sm\"),\n \"border-color\": st(\"color-grey20\"),\n },\n option: {\n \"column-gap\": st(\"spacing-8\"),\n \"font-family\": st(\"font-family-default\"),\n \"font-size\": st(\"font-size-med\"),\n \"bg-color-active\": st(\"color-grey20\"),\n \"bg-color\": st(\"color-white\"),\n \"font-weight-selected\": st(\"font-weight-bold\"),\n color: st(\"color-black\"),\n \"color-disabled\": st(\"color-grey40\"),\n padding: \"2px 4px\",\n },\n};\n","import { getSemanticToken as st } from \"../../common/token-getters\";\n\nexport const STUDIO_BUTTON_TOKENS = {\n button: {\n xpadding: st(\"spacing-16\"),\n ypadding: st(\"spacing-6\"),\n br: st(\"spacing-2\"),\n cursor: \"pointer\",\n \"line-height\": st(\"line-height-default\"),\n \"font-size\": st(\"font-size-med\"),\n \"ypadding-small\": st(\"spacing-2\"),\n \"border-width\": \"1px\",\n \"font-weight\": st(\"font-weight-bold\"),\n \"icon-margin\": `0px ${st(\"spacing-4\")} 0px 0px`,\n \"flex-direction\": \"row\",\n // VARIANTS\n // - Primary\n bg: st(\"color-primary\"),\n \"bg-hover\": st(\"color-additional1\"),\n \"bg-active\": st(\"color-additional2\"),\n \"bg-disabled\": st(\"color-grey30\"),\n border: st(\"color-primary\"),\n \"border-hover\": st(\"color-additional1\"),\n \"border-active\": st(\"color-additional2\"),\n \"border-disabled\": st(\"color-grey30\"),\n color: st(\"color-white\"),\n \"color-hover\": st(\"color-white\"),\n \"color-active\": st(\"color-white\"),\n \"color-disabled\": st(\"color-white\"),\n // - Secondary\n \"bg-secondary\": st(\"color-white\"),\n \"bg-hover-secondary\": st(\"color-white\"),\n \"bg-active-secondary\": st(\"color-white\"),\n \"bg-disabled-secondary\": st(\"color-grey10\"),\n \"border-secondary\": st(\"color-primary\"),\n \"border-hover-secondary\": st(\"color-additional1\"),\n \"border-active-secondary\": st(\"color-additional2\"),\n \"border-disabled-secondary\": st(\"color-grey30\"),\n \"color-secondary\": st(\"color-primary\"),\n \"color-hover-secondary\": st(\"color-additional1\"),\n \"color-active-secondary\": st(\"color-additional2\"),\n \"color-disabled-secondary\": st(\"color-grey30\"),\n // - Borderless\n \"bg-borderless\": st(\"color-white\"),\n \"bg-hover-borderless\": st(\"color-white\"),\n \"bg-active-borderless\": st(\"color-white\"),\n \"bg-disabled-borderless\": st(\"color-white\"),\n \"border-borderless\": st(\"color-white\"),\n \"border-hover-borderless\": st(\"color-white\"),\n \"border-active-borderless\": st(\"color-white\"),\n \"border-disabled-borderless\": st(\"color-white\"),\n \"color-borderless\": st(\"color-primary\"),\n \"color-hover-borderless\": st(\"color-additional1\"),\n \"color-active-borderless\": st(\"color-additional2\"),\n \"color-disabled-borderless\": st(\"color-grey30\"),\n },\n};\n","import { getSemanticToken as st } from \"../../common/token-getters\";\n\nexport const STUDIO_LABEL_TOKENS = {\n label: {\n gap: st(\"spacing-4\"),\n },\n \"label-with-action\": {\n gap: st(\"spacing-8\"),\n },\n \"label-with-content-link\": {\n color: st(\"color-primary\"),\n },\n};\n","import { getSemanticToken } from \"../../common/token-getters\";\n\nexport const STUDIO_TEXT_TOKENS = {\n text: {\n \"font-family\": getSemanticToken(\"font-family-default\"),\n \"line-height\": getSemanticToken(\"line-height-default\"),\n \"h1-size\": getSemanticToken(\"font-size-xlrg\"),\n \"h2-size\": getSemanticToken(\"font-size-lrg\"),\n \"body-size\": getSemanticToken(\"font-size-med\"),\n \"small-size\": getSemanticToken(\"font-size-sm\"),\n \"font-weight-bold\": getSemanticToken(\"font-weight-bold\"),\n \"font-weight-normal\": getSemanticToken(\"font-weight-normal\"),\n \"color-dark\": getSemanticToken(\"color-black\"),\n \"color-light\": getSemanticToken(\"color-white\"),\n \"color-green\": getSemanticToken(\"color-green\"),\n \"color-red\": getSemanticToken(\"color-red\"),\n \"color-blue\": getSemanticToken(\"color-primary\"),\n \"color-grey\": getSemanticToken(\"color-grey60\"),\n \"color-disabled\": getSemanticToken(\"color-grey40\"),\n \"color-yellow\": getSemanticToken(\"color-yellow\"),\n \"color-orange\": getSemanticToken(\"color-orange\"),\n },\n} as const;\n","import { getSemanticToken } from \"../../common/token-getters\";\n\nexport const TAB_TOKENS = {\n tab: {\n \"trigger-padding-y\": getSemanticToken(\"spacing-8\"),\n \"trigger-padding-x\": \"0\",\n \"column-gap\": getSemanticToken(\"spacing-8\"),\n \"indicator-height\": getSemanticToken(\"border-lrg\"),\n \"indicator-color\": getSemanticToken(\"color-grey60\"),\n \"trigger-list-underline-color\": getSemanticToken(\"color-grey20\"),\n \"trigger-list-underline-height\": getSemanticToken(\"border-sm\"),\n },\n} as const;\n","import { getSemanticToken } from \"../../common/token-getters\";\n\nexport type TagColor =\n | \"blue\"\n | \"disabled\"\n | \"green\"\n | \"light\"\n | \"orange\"\n | \"purple\"\n | \"red\";\n\nexport const TAG_TOKENS = {\n tag: {\n \"font-family\": getSemanticToken(\"font-family-default\"),\n \"bg-color-orange\": getSemanticToken(\"color-orange\"),\n \"bg-color-light\": getSemanticToken(\"color-white\"),\n \"bg-color-green\": getSemanticToken(\"color-green\"),\n \"bg-color-red\": getSemanticToken(\"color-red\"),\n \"bg-color-purple\": getSemanticToken(\"color-purple\"),\n \"bg-color-blue\": getSemanticToken(\"color-blue\"),\n \"bg-color-disabled\": getSemanticToken(\"color-white\"),\n \"color-light\": getSemanticToken(\"color-white\"),\n \"color-dark\": getSemanticToken(\"color-black\"),\n \"color-disabled\": getSemanticToken(\"color-grey40\"),\n \"border-radius\": getSemanticToken(\"border-sm\"),\n \"border-color\": getSemanticToken(\"color-grey20\"),\n height: getSemanticToken(\"spacing-18\"),\n padding: \"0px 4px\",\n },\n} as const;\n","import { getSemanticToken as st } from \"../../common/token-getters\";\n\nexport const TEXTAREA_TOKENS = {\n textarea: {\n padding: st(\"spacing-8\"),\n \"background-color\": st(\"color-white\"),\n \"font-size\": st(\"font-size-med\"),\n \"font-family\": st(\"font-family-default\"),\n \"font-weight\": st(\"font-weight-normal\"),\n color: st(\"color-black\"),\n \"border-width\": st(\"border-sm\"),\n \"border-color\": st(\"color-grey30\"),\n \"min-height\": \"60px\",\n \"border-color-active\": st(\"color-black\"),\n \"border-radius\": st(\"spacing-2\"),\n \"border-color-invalid\": st(\"color-red\"),\n \"background-color-disabled\": st(\"color-grey10\"),\n \"color-disabled\": st(\"color-grey30\"),\n },\n};\n","import { getSemanticToken as st } from \"../../common/token-getters\";\n\nexport const TOGGLE_TOKENS = {\n \"toggle-container\": {\n gap: \"4px\",\n },\n \"toggle-track\": {\n \"background-color-checked-disabled\": st(\"color-additional3\"),\n \"background-color-checked-enabled\": st(\"color-primary\"),\n \"background-color-unchecked-disabled\": st(\"color-grey20\"),\n \"background-color-unchecked-enabled\": st(\"color-grey50\"),\n \"border-radius\": st(\"spacing-20\"),\n \"padding-horizontal\": \"3px\",\n \"padding-vertical\": \"2px\",\n \"transition-duration\": \"150ms\",\n },\n \"toggle-thumb\": {\n \"background-color-checked-enabled\": st(\"color-white\"),\n \"background-color-checked-disabled\": st(\"color-white\"),\n \"background-color-unchecked-enabled\": st(\"color-white\"),\n \"background-color-unchecked-disabled\": st(\"color-grey15\"),\n \"border-radius\": \"15px\",\n \"box-shadow\":\n \"0px 1px 3px 0px rgba(16, 24, 40, 0.1), 0px 1px 2px -1px rgba(16, 24, 40, 0.1)\",\n height: \"8px\",\n width: \"8px\",\n \"transition-duration\": \"150ms\",\n },\n};\n","import { getSemanticToken as st } from \"../../common/token-getters\";\n\nexport const VERSION_LIST_TOKENS = {\n \"version-list-container\": {\n gap: st(\"spacing-16\"),\n },\n \"version-list-header\": {\n gap: st(\"spacing-8\"),\n itemBorderBottom: st(\"color-grey20\"),\n itemBgColor: st(\"color-grey10\"),\n },\n};\n","import { getSemanticToken as st } from \"../../common/token-getters\";\n\nexport const COMBO_BOX_TOKENS = {\n combobox: {\n \"background-color-active\": st(\"color-grey15\"),\n \"background-color-selected\": st(\"color-additional3\"),\n \"background-color\": st(\"color-white\"),\n \"border-radius\": \"4px\",\n \"box-shadow\": \"0px 0px 4px 0px rgba(0, 0, 0, 0.25)\",\n \"input-border-radius\": \"6px\",\n \"option-column-gap\": st(\"spacing-4\"),\n \"row-gap\": st(\"spacing-6\"),\n \"selection-border-radius\": \"4px\",\n height: \"22px\",\n padding: st(\"spacing-8\"),\n },\n};\n","import { getSemanticToken } from \"../../common/token-getters\";\n\nexport const RADIO_BUTTON_TOKENS = {\n \"radio-button\": {\n size: getSemanticToken(\"spacing-14\"),\n \"check-size\": getSemanticToken(\"spacing-8\"),\n \"border-color\": getSemanticToken(\"color-grey20\"),\n \"background-color\": getSemanticToken(\"color-white\"),\n \"border-width\": getSemanticToken(\"border-sm\"),\n \"border-radius\": \"50%\",\n \"border-color-checked\": getSemanticToken(\"color-primary\"),\n \"background-color-disabled\": getSemanticToken(\"color-grey10\"),\n },\n} as const;\n","import { getSemanticToken } from \"../../common/token-getters\";\n\nexport const SELECT_VIEW_LIST_TOKENS = {\n \"select-view-list\": {\n \"item-height\": getSemanticToken(\"spacing-36\"),\n \"padding-left\": getSemanticToken(\"spacing-16\"),\n \"padding-right\": getSemanticToken(\"spacing-8\"),\n \"border-width\": getSemanticToken(\"border-sm\"),\n \"border-color\": getSemanticToken(\"color-grey20\"),\n \"background-color\": getSemanticToken(\"color-white\"),\n \"background-color-viewing\": getSemanticToken(\"color-grey15\"),\n gap: getSemanticToken(\"spacing-4\"),\n },\n} as const;\n","import { getSemanticToken } from \"../../common/token-getters\";\n\nexport const SHELL_MENU_TOKENS = {\n \"shell-menu\": {\n \"padding-x\": getSemanticToken(\"spacing-20\"),\n \"link-gap\": getSemanticToken(\"spacing-12\"),\n \"section-gap\": getSemanticToken(\"spacing-8\"),\n \"link-padding-y\": getSemanticToken(\"spacing-2\"),\n \"link-padding-x\": getSemanticToken(\"spacing-4\"),\n },\n} as const;\n","import { getSemanticToken } from \"../../common/token-getters\";\n\nexport const NAMED_LIST_ITEM_TOKENS = {\n \"named-list-item\": {\n \"column-gap\": getSemanticToken(\"spacing-6\"),\n \"row-gap\": getSemanticToken(\"spacing-4\"),\n \"color-selected\": getSemanticToken(\"color-white\"),\n \"background-color-selected\": getSemanticToken(\"color-primary\"),\n \"padding-y\": getSemanticToken(\"spacing-4\"),\n \"padding-right\": getSemanticToken(\"spacing-12\"),\n \"padding-left\": getSemanticToken(\"spacing-20\"),\n \"subtext-padding-with-icon\": getSemanticToken(\"spacing-20\"),\n },\n} as const;\n","import { getSemanticToken as st } from \"../../common/token-getters\";\n\nexport const ERROR_LIST_ITEM_TOKENS = {\n \"error-list-item\": {\n \"row-gap\": st(\"spacing-4\"),\n \"icon-column-width\": st(\"spacing-26\"),\n \"padding-x\": st(\"spacing-4\"),\n \"padding-y\": st(\"spacing-12\"),\n \"background-color\": st(\"color-white\"),\n \"background-color-overview\": st(\"color-grey10\"),\n \"background-color-hover\": st(\"color-grey10\"),\n \"background-color-overview-hover\": st(\"color-white\"),\n \"border-color\": st(\"color-grey20\"),\n \"border-radius\": st(\"spacing-2\"),\n },\n};\n","import { getSemanticToken as st } from \"../../common/token-getters\";\n\nexport const INGREDIENT_CARD_TOKENS = {\n \"ingredient-card\": {\n border: st(\"border-sm\"),\n \"border-color\": st(\"color-grey20\"),\n \"border-color-selected\": st(\"color-primary\"),\n padding: st(\"spacing-12\"),\n \"padding-small\": st(\"spacing-8\"),\n \"border-radius\": st(\"spacing-2\"),\n \"row-gap\": st(\"spacing-4\"),\n \"column-gap\": st(\"spacing-4\"),\n },\n};\n","import { getSemanticToken as st } from \"../../common/token-getters\";\n\nexport const BRANDED_HEADER_TOKENS = {\n \"branded-header\": {\n \"startColor-settings\": \"#048FEC\",\n \"startColor-devices\": \"#9747FF\",\n \"startColor-tools\": \"#01528A\",\n \"startColor-performance\": \"#B4DEFA\",\n \"endColor-viewBrowse\": \"#1C00D8\",\n \"endColor-configure\": \"#4CC9F0\",\n \"endColor-manage\": \"#9A99F2\",\n \"endColor-troubleshoot\": \"#53D7C7\",\n \"endColor-store\": \"#193C60\",\n \"endColor-main\": \"#048FEC\",\n\n \"border-bottom-size\": st(\"border-sm\"),\n \"border-bottom-color\": st(\"color-grey20\"),\n \"background-color\": st(\"color-white\"),\n\n \"column-gap\": st(\"spacing-16\"),\n padding: \"12px 20px\",\n\n \"badge-size\": \"52px\",\n \"badge-radius\": \"0\",\n\n \"line-height\": st(\"spacing-6\"),\n\n \"info-column-gap\": st(\"spacing-10\"),\n \"text-wrapper-gap\": st(\"spacing-4\"),\n },\n};\n","import { getSemanticToken as st } from \"../../common/token-getters\";\n\nexport const ARTIFACT_STORE_SETTINGS = {\n \"artifact-store-settings\": {\n \"row-columns-published\":\n \"minmax(96px, 1fr) 64px minmax(244px, 2fr) 96px 60px\",\n \"row-columns-market\": \"minmax(96px, 1fr) 64px minmax(244px, 2fr)\",\n \"row-divider-color\": st(\"color-grey20\"),\n \"row-gap\": st(\"spacing-4\"),\n \"header-padding\": \"0px 8px 0px 4px\",\n \"cell-padding\": \"12px 8px 12px 4px\",\n \"name-column-gap\": st(\"spacing-4\"),\n },\n};\n","import { getSemanticToken } from \"../../common/token-getters\";\n\nexport const TABLE_TOKENS = {\n table: {\n \"row-border-bottom-size\": getSemanticToken(\"border-xsm\"),\n \"border-color\": getSemanticToken(\"color-grey20\"),\n \"header-background-color-hover\": getSemanticToken(\"color-grey20\"),\n \"header-background-color\": getSemanticToken(\"color-grey15\"),\n \"cell-padding-x\": getSemanticToken(\"spacing-4\"),\n \"cell-padding-y\": \"11px\",\n \"cell-padding-right-sortable\": getSemanticToken(\"spacing-8\"),\n \"head-gap-sortable\": getSemanticToken(\"spacing-4\"),\n \"background-color\": getSemanticToken(\"color-white\"),\n \"head-font-size\": getSemanticToken(\"font-size-med\"),\n \"head-color\": getSemanticToken(\"color-black\"),\n \"head-font-weight\": getSemanticToken(\"font-weight-bold\"),\n \"cell-font-size\": getSemanticToken(\"font-size-med\"),\n \"cell-color\": getSemanticToken(\"color-black\"),\n \"cell-font-weight\": getSemanticToken(\"font-weight-normal\"),\n \"font-family\": getSemanticToken(\"font-family-default\"),\n },\n} as const;\n","import { getSemanticToken } from \"../../common/token-getters\";\n\nexport const RESIZABLE_PANELS_TOKENS = {\n \"resizable-panels\": {\n \"border-color\": getSemanticToken(\"color-grey20\"),\n \"border-color-hover\": getSemanticToken(\"color-grey30\"),\n \"border-color-drag\": getSemanticToken(\"color-grey40\"),\n \"handle-width\": getSemanticToken(\"border-sm\"),\n },\n} as const;\n","import { getSemanticToken as st } from \"../../common/token-getters\";\n\nexport const FILE_PICKER_TOKENS = {\n \"file-picker\": {\n // Generic\n \"background-color\": st(\"color-grey10\"),\n \"background-color-accent\": st(\"color-white\"),\n \"selected-background\": st(\"color-primary\"),\n // Header\n \"header-x-padding\": st(\"spacing-20\"),\n \"header-y-padding\": st(\"spacing-12\"),\n \"header-border-size\": st(\"border-sm\"),\n \"header-gap\": st(\"spacing-8\"),\n \"header-border-color\": st(\"color-grey20\"),\n // Footer\n \"footer-padding-x\": st(\"spacing-12\"),\n \"footer-padding-y\": st(\"spacing-10\"),\n \"footer-controls-gap\": st(\"spacing-4\"),\n \"footer-border-size\": st(\"border-xsm\"),\n \"footer-border-color\": st(\"color-grey20\"),\n // Search Bar\n \"search-bar-height\": st(\"spacing-36\"),\n \"search-bar-border-size\": st(\"border-sm\"),\n \"search-bar-border-color\": st(\"color-grey30\"),\n \"search-bar-nav-buttons-gap\": st(\"spacing-12\"),\n \"search-bar-padding-x\": st(\"spacing-20\"),\n \"search-bar-padding-y\": \"6.5px\",\n \"search-bar-radius\": st(\"spacing-2\"),\n \"search-bar-edit-button-width\": st(\"spacing-22\"),\n \"search-bar-breadcrumb-padding-x\": st(\"spacing-4\"),\n \"search-bar-breadcrumb-hover-border\": st(\"color-grey50\"),\n \"search-bar-export-button-radius\": st(\"spacing-2\"),\n \"search-bar-export-button-background\": st(\"color-primary\"),\n \"search-bar-export-button-background-disabled\": st(\"color-grey30\"),\n // Nav Panel\n \"nav-panel-y-padding\": st(\"spacing-20\"),\n \"nav-panel-x-padding\": st(\"spacing-20\"),\n \"nav-panel-gap\": st(\"spacing-40\"),\n \"nav-panel-header-bottom-margin\": st(\"spacing-4\"),\n \"nav-panel-section-gap\": st(\"spacing-4\"),\n \"nav-panel-item-gap\": st(\"spacing-4\"),\n \"nav-panel-item-y-padding\": st(\"spacing-2\"),\n // Explorer\n \"explorer-panel-right-gutter-size\": st(\"spacing-12\"),\n \"explorer-panel-padding-y\": st(\"spacing-4\"),\n \"explorer-panel-padding-x\": st(\"spacing-10\"),\n \"explorer-panel-gap\": st(\"spacing-4\"),\n \"explorer-panel-item-padding-x\": st(\"spacing-4\"),\n \"explorer-panel-item-padding-y\": st(\"spacing-2\"),\n \"explorer-panel-item-icon-gap-left\": st(\"spacing-4\"),\n \"explorer-panel-item-icon-gap-right\": st(\"spacing-4\"),\n \"explorer-panel-kab-background\": st(\"color-grey10\"),\n // Preview\n \"preview-details-gap\": st(\"spacing-10\"),\n \"preview-details-gap-small\": st(\"spacing-8\"),\n \"preview-icon-size\": st(\"spacing-40\"),\n \"preview-icon-y-padding\": st(\"spacing-40\"),\n \"preview-icon-y-padding-small\": st(\"spacing-12\"),\n \"preview-details-x-padding\": st(\"spacing-20\"),\n \"preview-details-x-padding-small\": st(\"spacing-8\"),\n \"preview-details-y-padding\": st(\"spacing-10\"),\n \"preview-details-item-gap\": st(\"spacing-8\"),\n \"preview-details-collapsible-bg\": st(\"color-grey10\"),\n \"preview-details-collapsible-gap\": st(\"spacing-4\"),\n \"preview-details-collapsible-y-padding\": st(\"spacing-4\"),\n \"preview-details-collapsible-border-color\": st(\"color-grey20\"),\n },\n};\n","export const SHELL_ICON_BUTTON_TOKENS = {\n \"shell-icon-button\": {\n padding: \"5px\",\n },\n};\n","import { getSemanticToken } from \"../../common/token-getters\";\n\nexport const MULTI_SELECT_TOKENS = {\n \"multi-select\": {\n \"list-padding\": getSemanticToken(\"spacing-4\"),\n \"padding-x\": getSemanticToken(\"spacing-12\"),\n \"padding-y\": getSemanticToken(\"spacing-4\"),\n \"border-radius\": getSemanticToken(\"spacing-6\"),\n border: getSemanticToken(\"border-sm\"),\n \"border-color\": getSemanticToken(\"color-grey20\"),\n \"select-all-border-color\": getSemanticToken(\"color-grey10\"),\n \"hover-border-color\": getSemanticToken(\"color-grey40\"),\n gap: getSemanticToken(\"spacing-4\"),\n background: getSemanticToken(\"color-white\"),\n \"item-padding-x\": getSemanticToken(\"spacing-12\"),\n \"item-padding-y\": getSemanticToken(\"spacing-4\"),\n \"item-gap\": getSemanticToken(\"spacing-8\"),\n \"item-hover-bg\": getSemanticToken(\"color-grey10\"),\n \"selected-item-padding-y\": getSemanticToken(\"spacing-2\"),\n \"selected-item-padding-x\": getSemanticToken(\"spacing-4\"),\n \"selected-item-gap\": getSemanticToken(\"spacing-4\"),\n \"selected-item-background\": getSemanticToken(\"color-grey10\"),\n \"selected-item-background-hover\": getSemanticToken(\"color-grey20\"),\n \"selected-item-radius\": getSemanticToken(\"spacing-4\"),\n },\n} as const;\n","import { getSemanticToken } from \"../../common/token-getters\";\n\nexport const BADGE_TOKENS = {\n badge: {\n \"color-blue\": getSemanticToken(\"color-blue\"),\n \"color-blue-border\": \"rgba(4, 143, 236, 0.5)\",\n \"color-red\": getSemanticToken(\"color-red\"),\n \"color-red-border\": \"rgba(244, 0, 0, 0.5)\",\n \"color-white\": getSemanticToken(\"color-white\"),\n \"color-white-border\": \"rgba(255, 255, 255, 0.5)\",\n \"color-black\": getSemanticToken(\"color-black\"),\n \"color-black-border\": \"rgba(0, 0, 0, 0.5)\",\n \"color-orange\": getSemanticToken(\"color-orange\"),\n \"color-orange-border\": \"rgba(255, 133, 0, 0.5)\",\n \"color-green\": getSemanticToken(\"color-green\"),\n \"color-green-border\": \"rgba(82, 196, 26, 0.5)\",\n },\n};\n","import { ACTIONABLE_BLURB_TOKENS } from \"./actionable-blurb\";\nimport { APP_SHELL_TOKENS } from \"./app-shell\";\nimport { ARTIFACT_DRAWER_TOKENS } from \"./artifact-drawer\";\nimport { CHECKBOX_TOKENS } from \"./checkbox\";\nimport { COLLAPSIBLE_ARTIFACT_TOKENS } from \"./collapsible-artifact\";\nimport { COLLAPSIBLE_LIST_TOKENS } from \"./collapsible-list\";\nimport { DRAWER_TOKENS } from \"./drawer\";\nimport { FORM_TOKENS } from \"./form\";\nimport { HORIZONTAL_RULE_TOKENS } from \"./horizontal-rule\";\nimport { ICON_BUTTON_TOKENS } from \"./icon-button\";\nimport { ICON_TOKENS } from \"./icon\";\nimport { IMAGE_CONFIG_PAGE_HEADER_TOKENS } from \"./image-config-page-header\";\nimport { INPUT_TOKENS } from \"./input\";\nimport { LINK_TOKENS } from \"./link\";\nimport { MODAL_TOKENS } from \"./modal\";\nimport { NAMED_SECTION_TOKENS } from \"./named-section\";\nimport { SEGMENTED_TOKENS } from \"./segmented\";\nimport { SELECT_TOKENS } from \"./select\";\nimport { STUDIO_BUTTON_TOKENS } from \"./button\";\nimport { STUDIO_LABEL_TOKENS } from \"./label\";\nimport { STUDIO_TEXT_TOKENS } from \"./text\";\nimport { TAB_TOKENS } from \"./tab\";\nimport { TAG_TOKENS, TagColor } from \"./tag\";\nimport { TEXTAREA_TOKENS } from \"./textarea\";\nimport { TOGGLE_TOKENS } from \"./toggle\";\nimport { VERSION_LIST_TOKENS } from \"./version-list\";\nimport { COMBO_BOX_TOKENS } from \"./combobox\";\nimport { RADIO_BUTTON_TOKENS } from \"./radio-button\";\nimport { SELECT_VIEW_LIST_TOKENS } from \"./select-view-list\";\nimport { SHELL_MENU_TOKENS } from \"./shell-menu\";\nimport { NAMED_LIST_ITEM_TOKENS } from \"./named-list-item\";\nimport { ERROR_LIST_ITEM_TOKENS } from \"./error-list-item\";\nimport { INGREDIENT_CARD_TOKENS } from \"./ingredient-card\";\nimport { BRANDED_HEADER_TOKENS } from \"./branded-header\";\nimport { ARTIFACT_STORE_SETTINGS } from \"./artifact-store-settings\";\nimport { TABLE_TOKENS } from \"./table\";\nimport { RESIZABLE_PANELS_TOKENS } from \"./resizable-panels\";\nimport { FILE_PICKER_TOKENS } from \"./file-picker\";\nimport { SHELL_ICON_BUTTON_TOKENS } from \"./shell-icon-button\";\nimport { MULTI_SELECT_TOKENS } from \"./multi-select\";\nimport { BADGE_TOKENS } from \"./badge\";\n\nexport const COMPONENT_TOKENS = {\n ...ACTIONABLE_BLURB_TOKENS,\n ...APP_SHELL_TOKENS,\n ...ARTIFACT_DRAWER_TOKENS,\n ...CHECKBOX_TOKENS,\n ...COLLAPSIBLE_ARTIFACT_TOKENS,\n ...COLLAPSIBLE_LIST_TOKENS,\n ...DRAWER_TOKENS,\n ...FORM_TOKENS,\n ...HORIZONTAL_RULE_TOKENS,\n ...ICON_BUTTON_TOKENS,\n ...ICON_TOKENS,\n ...IMAGE_CONFIG_PAGE_HEADER_TOKENS,\n ...INPUT_TOKENS,\n ...LINK_TOKENS,\n ...MODAL_TOKENS,\n ...NAMED_SECTION_TOKENS,\n ...SEGMENTED_TOKENS,\n ...SELECT_TOKENS,\n ...STUDIO_BUTTON_TOKENS,\n ...STUDIO_LABEL_TOKENS,\n ...STUDIO_TEXT_TOKENS,\n ...TAB_TOKENS,\n ...TAG_TOKENS,\n ...TEXTAREA_TOKENS,\n ...TOGGLE_TOKENS,\n ...VERSION_LIST_TOKENS,\n ...COMBO_BOX_TOKENS,\n ...RADIO_BUTTON_TOKENS,\n ...BADGE_TOKENS,\n ...SELECT_VIEW_LIST_TOKENS,\n ...SHELL_MENU_TOKENS,\n ...NAMED_LIST_ITEM_TOKENS,\n ...ERROR_LIST_ITEM_TOKENS,\n ...INGREDIENT_CARD_TOKENS,\n ...BRANDED_HEADER_TOKENS,\n ...ARTIFACT_STORE_SETTINGS,\n ...TABLE_TOKENS,\n ...RESIZABLE_PANELS_TOKENS,\n ...FILE_PICKER_TOKENS,\n ...SHELL_ICON_BUTTON_TOKENS,\n ...MULTI_SELECT_TOKENS,\n} as const;\n\nexport type { TagColor };\n","export const COLOR_DEFINITION = {\n color: {\n // Greys\n grey0: \"#FFFFFF\",\n grey10: \"#F6F6F6\",\n grey15: \"#F1F1F1\",\n grey20: \"#DFDFDF\",\n grey30: \"#D9D9D9\",\n grey40: \"#C4C4C4\",\n grey50: \"#ABABAB\",\n grey60: \"#868686\",\n grey65: \"#676767\",\n grey70: \"#484848\",\n grey80: \"#2F2F2F\",\n grey100: \"#262626\",\n // Brand\n blue0: \"#E6F7FF\",\n blue10: \"#C8E8FF\",\n blue20: \"#40A9FF\",\n blue30: \"#048FEC\",\n blue40: \"#096DD9\",\n // System\n green0: \"#52C41A\",\n red0: \"#F40000\",\n orange0: \"#FF8500\",\n purple0: \"#9747FF\",\n yellow0: \"#fffd87\",\n yellow1: \"#FFD600\",\n },\n} as const;\n","export const TYPOGRAPHY_DEFINITIONS = {\n \"font-size\": {\n \"10px\": \"10px\",\n \"12px\": \"12px\",\n \"14px\": \"14px\",\n \"16px\": \"16px\",\n },\n \"font-weight\": {\n \"400\": \"400\",\n \"700\": \"700\",\n },\n \"font-family\": {\n Arial: \"Arial, sans-serif\",\n },\n \"line-height\": {\n \"120\": \"1.2\",\n },\n} as const;\n","export const SPACING_DEFINITION = {\n spacing: {\n \"0-5px\": \"0.5px\",\n \"1px\": \"1px\",\n \"2px\": \"2px\",\n \"3px\": \"3px\",\n \"4px\": \"4px\",\n \"6px\": \"6px\",\n \"7px\": \"7px\",\n \"8px\": \"8px\",\n \"10px\": \"10px\",\n \"12px\": \"12px\",\n \"14px\": \"14px\",\n \"16px\": \"16px\",\n \"18px\": \"18px\",\n \"20px\": \"20px\",\n \"22px\": \"22px\",\n \"24px\": \"24px\",\n \"26px\": \"26px\",\n \"28px\": \"28px\",\n \"30px\": \"30px\",\n \"32px\": \"32px\",\n \"34px\": \"34px\",\n \"36px\": \"36px\",\n \"40px\": \"40px\",\n },\n} as const;\n","import { COLOR_DEFINITION } from \"./color\";\nimport { TYPOGRAPHY_DEFINITIONS } from \"./typography\";\nimport { SPACING_DEFINITION } from \"./spacing\";\n\nexport const GLOBAL_TOKENS = {\n ...COLOR_DEFINITION,\n ...TYPOGRAPHY_DEFINITIONS,\n ...SPACING_DEFINITION,\n} as const;\n","import { getGlobalToken } from \"../../common/token-getters\";\n\nexport const SEMANTIC_COLOR_DEFINITION = {\n // TODO: Talk to bndigital about a more semantic naming\n // convention for these tokens.\n color: {\n white: getGlobalToken(\"color-grey0\"),\n grey10: getGlobalToken(\"color-grey10\"),\n grey15: getGlobalToken(\"color-grey15\"),\n grey20: getGlobalToken(\"color-grey20\"),\n grey30: getGlobalToken(\"color-grey30\"),\n grey40: getGlobalToken(\"color-grey40\"),\n grey50: getGlobalToken(\"color-grey50\"),\n grey60: getGlobalToken(\"color-grey60\"),\n grey65: getGlobalToken(\"color-grey65\"),\n grey70: getGlobalToken(\"color-grey70\"),\n grey80: getGlobalToken(\"color-grey80\"),\n black: getGlobalToken(\"color-grey100\"),\n primary: getGlobalToken(\"color-blue30\"),\n primaryLight: getGlobalToken(\"color-blue0\"),\n additional1: getGlobalToken(\"color-blue20\"),\n additional2: getGlobalToken(\"color-blue40\"),\n additional3: getGlobalToken(\"color-blue10\"),\n green: getGlobalToken(\"color-green0\"),\n orange: getGlobalToken(\"color-orange0\"),\n red: getGlobalToken(\"color-red0\"),\n purple: getGlobalToken(\"color-purple0\"),\n blue: getGlobalToken(\"color-blue30\"),\n yellow: getGlobalToken(\"color-yellow0\"),\n },\n} as const;\n","import { getGlobalToken } from \"../../common/token-getters\";\n\nexport const SEMANTIC_TYPOGRAPHY_DEFINITIONS = {\n \"font-size\": {\n sm: getGlobalToken(\"font-size-10px\"),\n med: getGlobalToken(\"font-size-12px\"),\n lrg: getGlobalToken(\"font-size-14px\"),\n xlrg: getGlobalToken(\"font-size-16px\"),\n },\n \"font-weight\": {\n normal: getGlobalToken(\"font-weight-400\"),\n bold: getGlobalToken(\"font-weight-700\"),\n },\n \"font-family\": {\n default: getGlobalToken(\"font-family-Arial\"),\n },\n \"line-height\": {\n default: getGlobalToken(\"line-height-120\"),\n },\n} as const;\n","import { getGlobalToken } from \"../../common/token-getters\";\n\nexport const SEMANTIC_SPACING_DEFINITION = {\n spacing: {\n \"2\": getGlobalToken(\"spacing-2px\"),\n \"4\": getGlobalToken(\"spacing-4px\"),\n \"6\": getGlobalToken(\"spacing-6px\"),\n \"7\": getGlobalToken(\"spacing-7px\"),\n \"8\": getGlobalToken(\"spacing-8px\"),\n \"10\": getGlobalToken(\"spacing-10px\"),\n \"12\": getGlobalToken(\"spacing-12px\"),\n \"14\": getGlobalToken(\"spacing-14px\"),\n \"16\": getGlobalToken(\"spacing-16px\"),\n \"18\": getGlobalToken(\"spacing-18px\"),\n \"20\": getGlobalToken(\"spacing-20px\"),\n \"22\": getGlobalToken(\"spacing-22px\"),\n \"24\": getGlobalToken(\"spacing-24px\"),\n \"26\": getGlobalToken(\"spacing-26px\"),\n \"28\": getGlobalToken(\"spacing-28px\"),\n \"30\": getGlobalToken(\"spacing-30px\"),\n \"32\": getGlobalToken(\"spacing-32px\"),\n \"34\": getGlobalToken(\"spacing-34px\"),\n \"36\": getGlobalToken(\"spacing-36px\"),\n \"40\": getGlobalToken(\"spacing-40px\"),\n },\n border: {\n xsm: getGlobalToken(\"spacing-0-5px\"),\n sm: getGlobalToken(\"spacing-1px\"),\n med: getGlobalToken(\"spacing-2px\"),\n lrg: getGlobalToken(\"spacing-3px\"),\n },\n} as const;\n","import { SEMANTIC_COLOR_DEFINITION } from \"./color\";\nimport { SEMANTIC_TYPOGRAPHY_DEFINITIONS } from \"./typography\";\nimport { SEMANTIC_SPACING_DEFINITION } from \"./spacing\";\n\nexport const SEMANTIC_TOKENS = {\n ...SEMANTIC_COLOR_DEFINITION,\n ...SEMANTIC_TYPOGRAPHY_DEFINITIONS,\n ...SEMANTIC_SPACING_DEFINITION,\n} as const;\n","/**\n * Utilities for creating local component tokens in consuming applications.\n *\n * These helpers allow applications to extend the design token system with their own\n * component tokens while maintaining consistency with the base library's patterns.\n *\n * @example\n * ```typescript\n * // my-app/src/styles/tokens/local-components/custom-card.ts\n * import { getSemanticToken as st } from '@kosdev-code/base-ui-components/styles';\n *\n * export const CUSTOM_CARD_TOKENS = {\n * 'custom-card': {\n * padding: st('spacing-16'),\n * 'background-color': st('color-white'),\n * 'border-color': st('color-grey20'),\n * },\n * } as const;\n * ```\n *\n * @example\n * ```typescript\n * // my-app/src/styles/tokens/index.ts\n * import { createLocalTokenSystem } from '@kosdev-code/base-ui-components/styles';\n * import { CUSTOM_CARD_TOKENS } from './local-components/custom-card';\n *\n * const LOCAL_TOKENS = {\n * ...CUSTOM_CARD_TOKENS,\n * } as const;\n *\n * export const {\n * getLocalComponentTokenHelpers,\n * localComponentTokenCss,\n * } = createLocalTokenSystem(LOCAL_TOKENS);\n * ```\n *\n * @example\n * ```typescript\n * // my-app/src/components/custom-card/custom-card.tsx\n * import { getLocalComponentTokenHelpers } from '../../styles/tokens';\n *\n * const [ct] = getLocalComponentTokenHelpers(['custom-card']);\n *\n * const StyledCard = styled.div`\n * padding: ${ct('padding')};\n * background-color: ${ct('background-color')};\n * `;\n * ```\n */\n\nimport { css } from \"@emotion/react\";\nimport { returnAsKey } from \"./token-getters\";\n\n/**\n * Type utility to extract token string keys from a token definition object.\n */\nexport type ExtractLocalTokenString<T> = T extends Record<string, infer U>\n ? U extends string\n ? U\n : never\n : never;\n\n/**\n * Transforms a token object into CSS custom property declarations.\n *\n * @param tokens - Object mapping namespaces to token definitions\n * @param prefix - CSS custom property prefix (default: 'studio-c')\n * @returns Array of CSS custom property declarations\n *\n * @internal\n */\nexport const transformLocalTokenObject = (\n tokens: Record<string, Record<string, string>>,\n prefix = \"studio-c\"\n): string[] =>\n Object.keys(tokens).flatMap((namespace) =>\n Object.keys(tokens[namespace]).map(\n (key) => `--${prefix}-${namespace}-${key}: ${tokens[namespace][key]}`\n )\n );\n\n/**\n * Creates a complete local token system with typed helpers and CSS injection.\n *\n * This function generates the same API as the base library's component token system,\n * allowing consuming applications to create their own component tokens that integrate\n * seamlessly with the base design tokens.\n *\n * @param tokens - Local component token definitions\n * @param options - Configuration options\n * @param options.prefix - CSS custom property prefix (default: 'studio-c')\n * @param options.cssRootSelector - CSS selector for token injection (default: ':root')\n *\n * @returns Object containing token helpers and CSS injection\n *\n * @example\n * ```typescript\n * const LOCAL_TOKENS = {\n * 'custom-card': {\n * padding: 'var(--studio-s-spacing-16)',\n * bg: 'var(--studio-s-color-white)',\n * },\n * 'custom-panel': {\n * width: '300px',\n * bg: 'var(--studio-s-color-grey10)',\n * },\n * } as const;\n *\n * const {\n * getLocalComponentTokenHelpers,\n * localComponentTokenCss,\n * } = createLocalTokenSystem(LOCAL_TOKENS);\n *\n * // Use in application root\n * <Global styles={[\n * globalStudioTokenCss,\n * semanticStudioTokenCss,\n * componentStudioTokenCss,\n * localComponentTokenCss, // ← Your local tokens\n * ]} />\n *\n * // Use in components\n * const [ct] = getLocalComponentTokenHelpers(['custom-card']);\n * const StyledCard = styled.div`\n * padding: ${ct('padding')};\n * `;\n * ```\n */\nexport const createLocalTokenSystem = <\n T extends Record<string, Record<string, string>>\n>(\n tokens: T,\n options: {\n prefix?: string;\n cssRootSelector?: string;\n } = {}\n) => {\n const { prefix = \"studio-c\", cssRootSelector = \":root\" } = options;\n\n /**\n * Creates typed token getter functions for specified component namespaces.\n *\n * This function provides the same API as the base library's `getComponentTokenHelpers`,\n * ensuring consistency across base and local components.\n *\n * @param namespaces - Array of component namespace strings\n * @returns Array of typed token getter functions\n *\n * @example\n * ```typescript\n * const [cardCT, panelCT] = getLocalComponentTokenHelpers(['custom-card', 'custom-panel']);\n *\n * const StyledCard = styled.div`\n * padding: ${cardCT('padding')};\n * background: ${cardCT('bg')};\n * `;\n *\n * const StyledPanel = styled.div`\n * width: ${panelCT('width')};\n * background: ${panelCT('bg')};\n * `;\n * ```\n */\n const getLocalComponentTokenHelpers = <N extends readonly (keyof T)[]>(\n namespaces: [...N]\n ): {\n [Key in keyof N]: (\n key: ExtractLocalTokenString<T[N[Key]]>,\n asKey?: boolean\n ) => string;\n } =>\n // @ts-expect-error Type mapping converts key to 'never' but runtime behavior is correct\n namespaces.map(\n (namespace) => (key: string, asKey?: boolean) =>\n returnAsKey(`--${prefix}-${String(namespace)}-${key}`, asKey)\n );\n\n /**\n * CSS custom property declarations for local component tokens.\n *\n * Inject this into your application root using Emotion's Global component\n * to make local component tokens available throughout your application.\n *\n * @example\n * ```tsx\n * import { Global } from '@emotion/react';\n *\n * <Global styles={[\n * globalStudioTokenCss,\n * semanticStudioTokenCss,\n * componentStudioTokenCss,\n * localComponentTokenCss,\n * ]} />\n * ```\n */\n const localComponentTokenCss = css`\n ${cssRootSelector} {\n ${transformLocalTokenObject(tokens, prefix).join(\";\\n \")};\n }\n `;\n\n return {\n getLocalComponentTokenHelpers,\n localComponentTokenCss,\n };\n};\n\n/**\n * Creates a typed token getter function for a single component namespace.\n *\n * Useful for quick components or when you don't need the full token system setup.\n *\n * @param namespace - Component namespace\n * @param prefix - CSS custom property prefix (default: 'studio-c')\n * @returns Typed token getter function\n *\n * @example\n * ```typescript\n * // Quick helper for a single component\n * const ct = createLocalComponentHelper<'padding' | 'bg' | 'color'>('quick-widget');\n *\n * const StyledWidget = styled.div`\n * padding: ${ct('padding')};\n * background: ${ct('bg')};\n * color: ${ct('color')};\n * `;\n * ```\n */\nexport const createLocalComponentHelper =\n <TKeys extends string>(namespace: string, prefix = \"studio-c\") =>\n (key: TKeys, asKey?: boolean) =>\n returnAsKey(`--${prefix}-${namespace}-${key}`, asKey);\n\n/**\n * Creates CSS for injecting local component tokens inline or in specific scopes.\n *\n * Use this when you want to define tokens programmatically or scope them\n * to specific parts of your application.\n *\n * @param tokens - Token definitions\n * @param options - Configuration options\n * @returns Emotion CSS object\n *\n * @example\n * ```typescript\n * // Scoped tokens for a specific section\n * const ThemedSection = styled.div`\n * ${createLocalComponentTokenCss({\n * 'custom-card': {\n * 'background-color': 'var(--studio-s-color-grey10)',\n * 'border-color': 'var(--studio-s-color-grey30)',\n * },\n * })}\n * `;\n * ```\n */\nexport const createLocalComponentTokenCss = (\n tokens: Record<string, Record<string, string>>,\n options: {\n prefix?: string;\n } = {}\n) => {\n const { prefix = \"studio-c\" } = options;\n\n return css`\n ${transformLocalTokenObject(tokens, prefix).join(\";\\n \")};\n `;\n};\n","import { css } from \"@emotion/react\";\nimport {\n getGlobalToken,\n getSemanticToken,\n returnAsKey,\n} from \"./common/token-getters\";\nimport { ExtractTokenString } from \"./common/types\";\nimport type { TagColor } from \"./component-tokens\";\nimport { COMPONENT_TOKENS } from \"./component-tokens\";\nimport { GLOBAL_TOKENS } from \"./global-tokens\";\nimport { SEMANTIC_TOKENS } from \"./semantic-tokens\";\n\nexport { getGlobalToken, getSemanticToken };\n\n// Export local token helpers for consuming applications\nexport {\n createLocalTokenSystem,\n createLocalComponentHelper,\n createLocalComponentTokenCss,\n transformLocalTokenObject,\n} from \"./common/local-token-helpers\";\nexport type { ExtractLocalTokenString } from \"./common/local-token-helpers\";\n\nexport { TagColor };\nexport const getComponentTokenHelpers = <\n T extends readonly (keyof typeof COMPONENT_TOKENS)[]\n>(\n namespaces: [...T]\n): {\n [Key in keyof T]: (\n key: ExtractTokenString<(typeof COMPONENT_TOKENS)[T[Key]]>,\n asKey?: boolean\n ) => string;\n} =>\n // @ts-expect-error Mapping seems to convert key to 'never'\n namespaces.map(\n (namespace) => (key, asKey) =>\n returnAsKey(`--studio-c-${namespace}-${key}`, asKey)\n );\n\nconst transformTokenObject = <T extends string>(\n tokens: {\n [key: string]: { [key: string]: string };\n },\n getTokenName: (key: T, asKey?: boolean) => string\n) =>\n Object.keys(tokens).flatMap((key) =>\n Object.keys(tokens[key]).map(\n (subKey) =>\n `${getTokenName(`${key}-${subKey}` as T, true)}: ${tokens[key][subKey]}`\n )\n );\n\nexport const semanticStudioTokenCss = css`\n :root {\n ${transformTokenObject(SEMANTIC_TOKENS, getSemanticToken)}\n }\n`;\n\nexport const globalStudioTokenCss = css`\n :root {\n .rdp-root {\n --rdp-accent-color: ${getSemanticToken(\"color-primary\")};\n }\n\n ${transformTokenObject(GLOBAL_TOKENS, getGlobalToken)}\n }\n`;\n\nexport const componentStudioTokenCss = css`\n :root {\n ${transformTokenObject(COMPONENT_TOKENS, (key, asKey) =>\n returnAsKey(`--studio-c-${key}`, asKey)\n )}\n }\n`;\n","import { css } from \"@emotion/react\";\n\nexport const baseComponentStyles = css`\n :root {\n // viewable list item\n --studio-component-viewable-list-item-padding-inline: var(\n --studio-generic-padding-small\n );\n\n --studio-component-viewable-list-item-icon-padding-inline: var(\n --studio-generic-padding-small\n )\n 0;\n --studio-component-viewable-list-item-icon-color: var(\n --studio-generic-color-blue-20\n );\n\n --studio-component-viewable-list-item-title-font-size: var(\n --studio-generic-font-size-medium\n );\n\n --studio-component-viewable-list-item-title-max-width: 116px;\n\n --studio-component-viewable-list-item-title-padding: var(\n --studio-generic-padding-x-small\n );\n }\n`;\n","import { css } from \"@emotion/react\";\n\nexport const baseComponentStyles = css`\n :root {\n // button\n --studio-component-button-background-color-active: var(\n --studio-semantic-control-background-color-active\n );\n --studio-component-button-background-color-default: var(\n --studio-semantic-control-background-color-default\n );\n --studio-component-button-background-color-disabled: var(\n --studio-semantic-control-background-color-disabled\n );\n\n --studio-component-button-background-color-hover: var(\n --studio-semantic-control-background-color-hover\n );\n\n --studio-component-button-border-color-active: var(\n --studio-semantic-control-border-color-active\n );\n --studio-component-button-border-color-default: var(\n --studio-semantic-control-border-color-default\n );\n --studio-component-button-border-color-disabled: var(\n --studio-semantic-control-border-color-disabled\n );\n\n --studio-component-button-border-color-hover: var(\n --studio-semantic-control-border-color-hover\n );\n\n --studio-component-button-border-width-default: var(\n --studio-semantic-control-border-width\n );\n --studio-component-button-border-width-halt: var(\n --studio-generic-border-width-large\n );\n --studio-component-button-border-width-run: var(\n --studio-generic-border-width-large\n );\n\n --studio-component-button-border-radius: var(\n --studio-generic-border-radius-x-large\n );\n\n --studio-component-button-color-active: var(\n --studio-semantic-control-color-active\n );\n --studio-component-button-color-default: var(\n --studio-semantic-control-color-default\n );\n --studio-component-button-color-disabled: var(\n --studio-semantic-control-color-disabled\n );\n\n --studio-component-button-font-family: var(\n --studio-semantic-control-font-family\n );\n --studio-component-button-font-size: 15px;\n --studio-component-button-font-weight: var(\n --studio-semantic-control-font-weight\n );\n\n --studio-component-button-gap: var(--studio-semantic-control-gap);\n --studio-component-button-padding: 10px 40px;\n }\n`;\n","import { css } from \"@emotion/react\";\n\nexport const baseComponentStyles = css`\n :root {\n // list item\n --studio-component-list-item-border-color-selected: var(\n --studio-generic-color-blue-30\n );\n --studio-component-list-item-background-color-selected: var(\n --studio-generic-color-blue-30\n );\n\n --studio-component-list-item-color-selected: var(\n --studio-generic-color-white\n );\n\n --studio-component-list-item-border-color-default: var(\n --studio-generic-color-white\n );\n --studio-component-list-item-background-color-default: var(\n --studio-generic-color-white\n );\n\n --studio-component-list-item-color-default: var(\n --studio-generic-color-grey-100\n );\n --studio-component-list-item-padding-inline: var(\n --studio-generic-padding-large\n )\n var(--studio-generic-padding-small);\n\n --studio-component-list-item-padding-inline: var(\n --studio-semantic-component-list-padding-inline\n );\n }\n`;\n","import { css } from \"@emotion/react\";\n\nexport const baseComponentStyles = css`\n :root {\n //list\n --studio-component-list-border-color-default: var(\n --studio-generic-color-grey-20\n );\n }\n`;\n","import { css } from \"@emotion/react\";\nimport { baseComponentStyles as viewableListItemStyles } from \"./components/kos-viewable-list-item\";\nimport { baseComponentStyles as buttonStyles } from \"./components/button\";\nimport { baseComponentStyles as listItemStyles } from \"./components/kos-list-item\";\nimport { baseComponentStyles as listStyles } from \"./components/kos-list\";\n\nexport const baseComponentStyles = css`\n :root {\n }\n`;\n\nexport const componentStyles = [\n baseComponentStyles,\n viewableListItemStyles,\n buttonStyles,\n listItemStyles,\n listStyles,\n];\n","import { css } from \"@emotion/react\";\n\nexport const baseGenericStyles = css`\n :root {\n /* radius */\n --studio-generic-border-radius-small: 4px;\n --studio-generic-border-radius-medium: 8px;\n --studio-generic-border-radius-large: 16px;\n --studio-generic-border-radius-x-large: 24px;\n\n /* border-width */\n --studio-generic-border-width-small: 1px;\n --studio-generic-border-width-large: 4px;\n\n /* border-style */\n --studio-generic-solid-border-style: solid;\n\n /* box-shadow */\n --studio-generic-box-shadow-small: 0 1px 2px rgba(0, 0, 0, 0.1);\n --studio-generic-box-shadow-medium: 0 4px 8px rgba(0, 0, 0, 0.1);\n --studio-generic-box-shadow-large: 0 8px 16px rgba(0, 0, 0, 0.1);\n\n /* box-sizing */\n --studio-generic-box-sizing: border-box;\n\n /* color */\n --studio-generic-color-blue-5: #e6f7ff;\n --studio-generic-color-blue-10: #c8e8ff;\n --studio-generic-color-blue-20: #40a9ff;\n --studio-generic-color-blue-30: #048fec;\n --studio-generic-color-blue-40: #096dd9;\n --studio-generic-color-blue-100: #2126f8;\n --studio-generic-color-green-10: #d7f6da;\n --studio-generic-color-green-100: #52c41a;\n --studio-generic-color-grey-5: #f9f9f9;\n --studio-generic-color-grey-10: #f6f6f6;\n --studio-generic-color-grey-15: #f1f1f1;\n --studio-generic-color-grey-20: #dfdfdf;\n --studio-generic-color-grey-30: #d9d9d9;\n --studio-generic-color-grey-40: #c4c4c4;\n --studio-generic-color-grey-50: #ababab;\n --studio-generic-color-grey-60: #868686;\n --studio-generic-color-grey-70: #484848;\n --studio-generic-color-grey-80: #2f2f2f;\n --studio-generic-color-grey-100: #262626;\n --studio-generic-color-grey-100-50: #17171780;\n --studio-generic-color-orange-100: #ff8500;\n --studio-generic-color-orange-200: #c87321;\n --studio-generic-color-red-5: #ffe1e2;\n --studio-generic-color-red-10: #f6d7d7;\n --studio-generic-color-red-100: #f40000;\n --studio-generic-color-red-200: #a70412;\n --studio-generic-color-purple-100: #9747ff;\n --studio-generic-color-red-coca-cola: #f40009;\n --studio-generic-color-white: #ffffff;\n\n /* font-family */\n --studio-generic-font-family-code: \"Source Code Pro\", \"Courier New\", Courier,\n monospace;\n --studio-generic-font-family-default: Arial, Helvetica, sans-serif;\n --studio-generic-font-size-default: 12px;\n\n /* font-size */\n --studio-generic-font-size-xx-small: 0.5rem;\n --studio-generic-font-size-x-small: 0.667rem;\n --studio-generic-font-size-small: 0.833rem;\n --studio-generic-font-size-medium: 1rem;\n --studio-generic-font-size-large: 1.167rem;\n --studio-generic-font-size-x-large: 1.333rem;\n --studio-generic-font-size-xx-large: 2.667rem;\n\n /* font-weight */\n --studio-generic-font-weight-regular: normal;\n --studio-generic-font-weight-medium: 600;\n --studio-generic-font-weight-bold: bold;\n --studio-generic-font-weight-700: 700;\n\n /* letter-spacing */\n --studio-generic-letter-spacing-normal: 0%;\n --studio-generic-letter-spacing-small: 0.48px;\n\n /* line-height */\n --studio-generic-line-height-normal: 120%;\n\n /* padding */\n --studio-generic-padding-x-large: 32px;\n --studio-generic-padding-large: 16px;\n --studio-generic-padding-medium: 12px;\n --studio-generic-padding-small: 8px;\n --studio-generic-padding-x-small: 4px;\n\n /* transition */\n --studio-generic-transition-duration-short: 150ms;\n --studio-generic-transition-duration-medium: 250ms;\n --studio-generic-transition-duration-long: 350ms;\n\n /* text-align */\n --studio-generic-left-text-align: left;\n --studio-generic-center-text-align: center;\n // --studio-generic-center-text-align: var(--studio-generic-color-white, #f0f0f0);\n }\n`;\n","import { css } from \"@emotion/react\";\n\nexport const baseSemanticStyles = css`\n :root {\n // colour\n --studio-semantic-color-system-green: var(--studio-generic-color-green-100);\n --studio-semantic-color-system-orange: var(\n --studio-generic-color-orange-100\n );\n --studio-semantic-color-system-red: var(--studio-generic-color-red-100);\n\n --studio-semantic-color-system-red: var(--studio-generic-color-purple-100);\n\n --studio-semantic-color-brand-primary: var(--studio-generic-color-blue-30);\n --studio-semantic-color-brand-primary-light: var(\n --studio-generic-color-blue-5\n );\n --studio-semantic-color-brand-additional-1: var(\n --studio-generic-color-blue-20\n );\n --studio-semantic-color-brand-additional-2: var(\n --studio-generic-color-blue-40\n );\n --studio-semantic-color-brand-additional-3: var(\n --studio-generic-color-blue-10\n );\n\n // control\n --studio-semantic-control-background-color-active: var(\n --studio-generic-color-blue-40\n );\n --studio-semantic-control-background-color-default: var(\n --studio-generic-color-blue-30\n );\n --studio-semantic-control-background-color-disabled: var(\n --studio-generic-color-grey-30\n );\n --studio-semantic-control-background-color-hover: var(\n --studio-generic-color-blue-20\n );\n\n --studio-semantic-control-border-color-active: var(\n --studio-generic-color-blue-40\n );\n --studio-semantic-control-border-color-default: var(\n --studio-generic-color-blue-30\n );\n --studio-semantic-control-border-color-disabled: var(\n --studio-generic-color-grey-30\n );\n --studio-semantic-control-border-color-hover: var(\n --studio-generic-color-blue-20\n );\n\n --studio-semantic-control-border-width: var(\n --studio-generic-border-width-small\n );\n --studio-semantic-control-border-radius: var(\n --studio-generic-border-radius-medium\n );\n\n --studio-semantic-control-color-active: var(\n --studio-generic-color-grey-100\n );\n --studio-semantic-control-color-default: var(\n --studio-generic-color-grey-70\n );\n --studio-semantic-control-color-disabled: var(\n --studio-generic-color-grey-30\n );\n --studio-semantic-control-color-hover: var(--studio-generic-color-grey-100);\n\n --studio-semantic-control-font-family: var(\n --studio-generic-font-family-default\n );\n --studio-semantic-control-font-size: var(\n --studio-generic-font-size-x-small\n );\n --studio-semantic-control-font-weight: var(\n --studio-generic-font-weight-medium\n );\n --studio-semantic-control-font-weight-500: 500;\n --studio-semantic-control-xs-font-size: var(\n --studio-generic-font-size-small\n );\n\n --studio-semantic-control-gap: var(--studio-generic-padding-small);\n --studio-semantic-control-min-width: 160px;\n --studio-semantic-control-gap-medium: 27px;\n --studio-semantic-control-gap-large: 40px;\n --studio-semantic-control-padding-large: var(\n --studio-generic-padding-large\n );\n --studio-semantic-control-padding-sm: 12px;\n --studio-semantic-control-padding: var(--studio-generic-padding-small)\n var(--studio-generic-padding-medium);\n --studio-semantic-control-transition-duration: var(\n --studio-generic-transition-duration-short\n );\n --studio-semantic-control-transition-property: background-color,\n border-color, color;\n --studio-semantic-control-transition-timing-function: ease-in-out;\n\n // control-container\n --studio-semantic-control-container-background-color-default: var(\n --studio-generic-color-grey-5\n );\n --studio-semantic-control-container-background-color-disabled: var(\n --studio-generic-color-grey-10\n );\n\n --studio-semantic-control-container-border-color-default: var(\n --studio-generic-color-grey-20\n );\n --studio-semantic-control-container-border-color-disabled: var(\n --studio-generic-color-grey-20\n );\n\n --studio-semantic-control-container-border-radius: var(\n --studio-generic-border-radius-medium\n );\n --studio-semantic-control-container-border-width: var(\n --studio-generic-border-width-small\n );\n\n --studio-semantic-control-container-color-default: var(\n --studio-generic-color-grey-100\n );\n --studio-semantic-control-container-color-disabled: var(\n --studio-generic-color-grey-30\n );\n\n --studio-semantic-control-container-font-family: var(\n --studio-generic-font-family-default\n );\n --studio-semantic-control-container-font-size: 18px;\n --studio-semantic-control-container-font-weight: var(\n --studio-generic-font-weight-medium\n );\n\n --studio-semantic-control-container-padding-x-small: 2px 4px;\n --studio-semantic-control-container-padding-x-large: var(\n --studio-generic-padding-x-large\n );\n --studio-semantic-control-container-padding: var(\n --studio-generic-padding-small\n )\n 12px;\n --studio-semantic-control-container-padding-large: var(\n --studio-generic-padding-large\n );\n --studio-semantic-control-container-padding-13px: 13px;\n --studio-semantic-control-container-padding-36px: 36px;\n\n --studio-semantic-control-container-margin-small: 4px;\n\n --studio-semantic-control-container-transition-duration: var(\n --studio-generic-transition-duration-short\n );\n\n --studio-semantic-control-line-height: 135%;\n --studio-semantic-control-letter-spacing: 0.64px;\n\n // action\n --studio-semantic-action-background-color-active: var(\n --studio-semantic-control-background-color-active\n );\n --studio-semantic-action-background-color-default: var(\n --studio-generic-color-white\n );\n --studio-semantic-action-background-color-disabled: var(\n --studio-semantic-control-background-color-disabled\n );\n --studio-semantic-action-background-color-hover: var(\n --studio-semantic-control-background-color-hover\n );\n\n --studio-semantic-action-border-color-active: var(\n --studio-semantic-control-border-color-active\n );\n --studio-semantic-action-border-color-default: var(\n --studio-semantic-control-border-color-default\n );\n --studio-semantic-action-border-color-disabled: var(\n --studio-semantic-control-border-color-disabled\n );\n --studio-semantic-action-border-color-hover: var(\n --studio-semantic-control-border-color-hover\n );\n\n --studio-semantic-action-border-width: var(\n --studio-semantic-control-border-width\n );\n --studio-semantic-action-border-radius: var(\n --studio-semantic-control-border-radius\n );\n\n --studio-semantic-action-color-active: var(\n --studio-semantic-control-color-active\n );\n --studio-semantic-action-color-default: var(\n --studio-semantic-control-color-default\n );\n --studio-semantic-action-color-disabled: var(\n --studio-semantic-control-color-disabled\n );\n --studio-semantic-action-color-hover: var(\n --studio-semantic-control-color-hover\n );\n\n --studio-semantic-action-font-family: var(\n --studio-semantic-control-font-family\n );\n --studio-semantic-action-font-size: 18px;\n --studio-semantic-action-font-weight: var(\n --studio-semantic-control-font-weight\n );\n\n --studio-semantic-action-gap: var(--studio-semantic-control-gap);\n --studio-semantic-action-min-width: var(\n --studio-semantic-control-min-width\n );\n --studio-semantic-action-padding: 10px var(--studio-generic-padding-medium);\n --studio-semantic-action-transition-duration: var(\n --studio-semantic-control-transition-duration\n );\n --studio-semantic-action-transition-property: var(\n --studio-semantic-control-transition-property\n );\n --studio-semantic-action-transition-timing-function: var(\n --studio-semantic-control-transition-timing-function\n );\n --studio-semantic-action-item-height: 40px;\n --studio-semantic-action-icon-color: var(--studio-generic-color-grey-50);\n\n --studio-semantic-action-icon-width-large: 32px;\n --studio-semantic-action-icon-width-medium: 24px;\n\n //unitDiv\n --studio-semantic-action-center-align-items: var(\n --studio-generic-center-text-align\n );\n --studio-semantic-action-grey-white-background-color: var(\n --studio-generic-center-text-align\n );\n --studio-semantic-action-grey-border-color: var(\n --studio-generic-border-width-small\n )\n var(--studio-generic-solid-border-style)\n var(--studio-generic-color-grey-30);\n\n --studio-semantic-component-list-padding-inline: var(\n --studio-generic-padding-large\n )\n var(--studio-generic-padding-small);\n }\n`;\n","import { css } from \"@emotion/react\";\nimport { baseGenericStyles, baseSemanticStyles, componentStyles } from \"./base\";\n\nexport * from \"./base\";\n\n/**\n * @deprecated Components should be styled using new tokens. Once ant has been removed, and older components have been switched to the new token\n * system this will be deleted.\n */\nexport const rootStyles = css`\n ::-webkit-scrollbar {\n background-color: transparent;\n height: 8px;\n width: 8px;\n }\n\n ::-webkit-scrollbar-thumb {\n background-color: var(--ddk-component-scrollbar-background-color);\n border-radius: var(--ddk-component-scrollbar-border-radius);\n }\n\n body {\n font-family: var(--ddk-generic-font-family-default);\n font-size: var(--ddk-generic-font-size-default);\n margin: 0;\n }\n\n code {\n font-family: var(--ddk-generic-font-family-code);\n }\n`;\n\n/**\n * @deprecated Components should be styled using new tokens. Once ant has been removed, and older components have been switched to the new token\n * system this will be deleted.\n */\nexport const getStyles = (temporaryThemeID?: \"studio\") =>\n temporaryThemeID === \"studio\"\n ? [\n //fontStyles,\n rootStyles,\n baseGenericStyles,\n ...componentStyles,\n baseSemanticStyles,\n ]\n : [\n //fontStyles,\n rootStyles,\n baseGenericStyles,\n ...componentStyles,\n baseSemanticStyles,\n ];\n","export const studioColors = {\n \"--palette-red-0\": \"hsl(0, 80%, 94%);\",\n \"--palette-red-1\": \"hsl(0, 80%, 90%);\",\n \"--palette-red-2\": \"hsl(0, 80%, 86%);\",\n \"--palette-red-3\": \"hsl(0, 80%, 77%);\",\n \"--palette-red-4\": \"hsl(0, 80%, 68%);\",\n \"--palette-red-5\": \"hsl(0, 80%, 59%);\",\n \"--palette-red-6\": \"hsl(0, 80%, 50%);\",\n \"--palette-red-7\": \"hsl(0, 80%, 41%);\",\n \"--palette-red-8\": \"hsl(0, 80%, 32%);\",\n \"--palette-red-9\": \"hsl(0, 80%, 23%);\",\n \"--palette-pink-0\": \"hsl(339, 80%, 94%);\",\n \"--palette-pink-1\": \"hsl(339, 80%, 90%);\",\n \"--palette-pink-2\": \"hsl(339, 80%, 86%);\",\n \"--palette-pink-3\": \"hsl(339, 80%, 77%);\",\n \"--palette-pink-4\": \"hsl(339, 80%, 68%);\",\n \"--palette-pink-5\": \"hsl(339, 80%, 59%);\",\n \"--palette-pink-6\": \"hsl(339, 80%, 50%);\",\n \"--palette-pink-7\": \"hsl(339, 80%, 41%);\",\n \"--palette-pink-8\": \"hsl(339, 80%, 32%);\",\n \"--palette-pink-9\": \"hsl(339, 80%, 23%);\",\n \"--palette-grape-0\": \"hsl(288, 80%, 94%);\",\n \"--palette-grape-1\": \"hsl(288, 80%, 90%);\",\n \"--palette-grape-2\": \"hsl(288, 80%, 86%);\",\n \"--palette-grape-3\": \"hsl(288, 80%, 77%);\",\n \"--palette-grape-4\": \"hsl(288, 80%, 68%);\",\n \"--palette-grape-5\": \"hsl(288, 80%, 59%);\",\n \"--palette-grape-6\": \"hsl(288, 80%, 50%);\",\n \"--palette-grape-7\": \"hsl(288, 80%, 41%);\",\n \"--palette-grape-8\": \"hsl(288, 80%, 32%);\",\n \"--palette-grape-9\": \"hsl(288, 80%, 23%);\",\n \"--palette-violet-0\": \"hsl(255, 80%, 94%);\",\n \"--palette-violet-1\": \"hsl(255, 80%, 90%);\",\n \"--palette-violet-2\": \"hsl(255, 80%, 86%);\",\n \"--palette-violet-3\": \"hsl(255, 80%, 77%);\",\n \"--palette-violet-4\": \"hsl(255, 80%, 68%);\",\n \"--palette-violet-5\": \"hsl(255, 80%, 59%);\",\n \"--palette-violet-6\": \"hsl(255, 80%, 50%);\",\n \"--palette-violet-7\": \"hsl(255, 80%, 41%);\",\n \"--palette-violet-8\": \"hsl(255, 80%, 32%);\",\n \"--palette-violet-9\": \"hsl(255, 80%, 23%);\",\n \"--palette-indigo-0\": \"hsl(230, 80%, 94%);\",\n \"--palette-indigo-1\": \"hsl(230, 80%, 90%);\",\n \"--palette-indigo-2\": \"hsl(230, 80%, 86%);\",\n \"--palette-indigo-3\": \"hsl(230, 80%, 77%);\",\n \"--palette-indigo-4\": \"hsl(230, 80%, 68%);\",\n \"--palette-indigo-5\": \"hsl(230, 80%, 59%);\",\n \"--palette-indigo-6\": \"hsl(230, 80%, 50%);\",\n \"--palette-indigo-7\": \"hsl(230, 80%, 41%);\",\n \"--palette-indigo-8\": \"hsl(230, 80%, 32%);\",\n \"--palette-indigo-9\": \"hsl(230, 80%, 23%);\",\n \"--palette-blue-0\": \"hsl(208, 80%, 94%);\",\n \"--palette-blue-1\": \"hsl(208, 80%, 90%);\",\n \"--palette-blue-2\": \"hsl(208, 80%, 86%);\",\n \"--palette-blue-3\": \"hsl(208, 80%, 77%);\",\n \"--palette-blue-4\": \"hsl(208, 80%, 68%);\",\n \"--palette-blue-5\": \"hsl(208, 80%, 59%);\",\n \"--palette-blue-6\": \"hsl(208, 80%, 50%);\",\n \"--palette-blue-7\": \"hsl(208, 80%, 41%);\",\n \"--palette-blue-8\": \"hsl(208, 80%, 32%);\",\n \"--palette-blue-9\": \"hsl(208, 80%, 23%);\",\n \"--palette-cyan-0\": \"hsl(188, 80%, 94%);\",\n \"--palette-cyan-1\": \"hsl(188, 80%, 90%);\",\n \"--palette-cyan-2\": \"hsl(188, 80%, 86%);\",\n \"--palette-cyan-3\": \"hsl(188, 80%, 77%);\",\n \"--palette-cyan-4\": \"hsl(188, 80%, 68%);\",\n \"--palette-cyan-5\": \"hsl(188, 80%, 59%);\",\n \"--palette-cyan-6\": \"hsl(188, 80%, 50%);\",\n \"--palette-cyan-7\": \"hsl(188, 80%, 41%);\",\n \"--palette-cyan-8\": \"hsl(188, 80%, 32%);\",\n \"--palette-cyan-9\": \"hsl(188, 80%, 23%);\",\n \"--palette-teal-0\": \"hsl(162, 80%, 94%);\",\n \"--palette-teal-1\": \"hsl(162, 80%, 90%);\",\n \"--palette-teal-2\": \"hsl(162, 80%, 86%);\",\n \"--palette-teal-3\": \"hsl(162, 80%, 77%);\",\n \"--palette-teal-4\": \"hsl(162, 80%, 68%);\",\n \"--palette-teal-5\": \"hsl(162, 80%, 59%);\",\n \"--palette-teal-6\": \"hsl(162, 80%, 50%);\",\n \"--palette-teal-7\": \"hsl(162, 80%, 41%);\",\n \"--palette-teal-8\": \"hsl(162, 80%, 32%);\",\n \"--palette-teal-9\": \"hsl(162, 80%, 23%);\",\n \"--palette-green-0\": \"hsl(131, 80%, 94%);\",\n \"--palette-green-1\": \"hsl(131, 80%, 90%);\",\n \"--palette-green-2\": \"hsl(131, 80%, 86%);\",\n \"--palette-green-3\": \"hsl(131, 80%, 77%);\",\n \"--palette-green-4\": \"hsl(131, 80%, 68%);\",\n \"--palette-green-5\": \"hsl(131, 80%, 59%);\",\n \"--palette-green-6\": \"hsl(131, 80%, 50%);\",\n \"--palette-green-7\": \"hsl(131, 80%, 41%);\",\n \"--palette-green-8\": \"hsl(131, 80%, 32%);\",\n \"--palette-green-9\": \"hsl(131, 80%, 23%);\",\n \"--palette-lime-0\": \"hsl(85, 80%, 94%);\",\n \"--palette-lime-1\": \"hsl(85, 80%, 90%);\",\n \"--palette-lime-2\": \"hsl(85, 80%, 86%);\",\n \"--palette-lime-3\": \"hsl(85, 80%, 77%);\",\n \"--palette-lime-4\": \"hsl(85, 80%, 68%);\",\n \"--palette-lime-5\": \"hsl(85, 80%, 59%);\",\n \"--palette-lime-6\": \"hsl(85, 80%, 50%);\",\n \"--palette-lime-7\": \"hsl(85, 80%, 41%);\",\n \"--palette-lime-8\": \"hsl(85, 80%, 32%);\",\n \"--palette-lime-9\": \"hsl(85, 80%, 23%);\",\n \"--palette-yellow-0\": \"hsl(39, 80%, 94%);\",\n \"--palette-yellow-1\": \"hsl(39, 80%, 90%);\",\n \"--palette-yellow-2\": \"hsl(39, 80%, 86%);\",\n \"--palette-yellow-3\": \"hsl(39, 80%, 77%);\",\n \"--palette-yellow-4\": \"hsl(39, 80%, 68%);\",\n \"--palette-yellow-5\": \"hsl(39, 80%, 59%);\",\n \"--palette-yellow-6\": \"hsl(39, 80%, 50%);\",\n \"--palette-yellow-7\": \"hsl(39, 80%, 41%);\",\n \"--palette-yellow-8\": \"hsl(39, 80%, 32%);\",\n \"--palette-yellow-9\": \"hsl(39, 80%, 23%);\",\n \"--palette-orange-0\": \"hsl(24, 80%, 94%);\",\n \"--palette-orange-1\": \"hsl(24, 80%, 90%);\",\n \"--palette-orange-2\": \"hsl(24, 80%, 86%);\",\n \"--palette-orange-3\": \"hsl(24, 80%, 77%);\",\n \"--palette-orange-4\": \"hsl(24, 80%, 68%);\",\n \"--palette-orange-5\": \"hsl(24, 80%, 59%);\",\n \"--palette-orange-6\": \"hsl(24, 80%, 50%);\",\n \"--palette-orange-7\": \"hsl(24, 80%, 41%);\",\n \"--palette-orange-8\": \"hsl(24, 80%, 32%);\",\n \"--palette-orange-9\": \"hsl(24, 80%, 23%);\",\n \"--palette-neutral\": \"hsl(0, 0%, 98%);\",\n \"--palette-neutral-0\": \"hsl(0, 0%, 97%);\",\n \"--palette-neutral-1\": \"hsl(0, 0%, 93%);\",\n \"--palette-neutral-2\": \"hsl(0, 0%, 87%);\",\n \"--palette-neutral-3\": \"hsl(0, 0%, 77%);\",\n \"--palette-neutral-4\": \"hsl(0, 0%, 68%);\",\n \"--palette-neutral-5\": \"hsl(0, 0%, 59%);\",\n \"--palette-neutral-6\": \"hsl(0, 0%, 50%);\",\n \"--palette-neutral-7\": \"hsl(0, 0%, 41%);\",\n \"--palette-neutral-8\": \"hsl(0, 0%, 32%);\",\n \"--palette-neutral-9\": \"hsl(0, 0%, 18%);\",\n \"--color-grey-0\": \"var(--palette-neutral-0)\",\n \"--color-grey-1\": \"var(--palette-neutral-1)\",\n \"--color-grey-2\": \"var(--palette-neutral-2)\",\n \"--color-grey-3\": \"var(--palette-neutral-3)\",\n \"--color-grey-4\": \"var(--palette-neutral-4)\",\n \"--color-grey-5\": \"var(--palette-neutral-5)\",\n \"--color-grey-6\": \"var(--palette-neutral-6)\",\n \"--color-grey-7\": \"var(--palette-neutral-7)\",\n \"--color-grey-8\": \"var(--palette-neutral-8)\",\n \"--color-grey-9\": \"var(--palette-neutral-9)\",\n \"--color-clouds-0\": \"hsl(192, 15%, 99%);\",\n \"--color-clouds-1\": \"hsl(192, 15%, 97%);\",\n \"--color-clouds-2\": \"hsl(192, 15%, 96%);\",\n \"--color-clouds-3\": \"hsl(192, 15%, 95%);\",\n \"--color-clouds-4\": \"hsl(192, 15%, 94%);\",\n \"--color-error\": \"#F40000\",\n \"--color-success\": \"#52C41A\",\n};\n\nexport const studioLightColors = {\n \"--kos-layer-1-color\": \"var(--palette-neutral-2);\",\n \"--kos-layer-2-color\": \"var(--palette-neutral-1);\",\n \"--kos-layer-3-color\": \"var(--palette-neutral-0);\",\n \"--kos-primary-1\": \"var(--palette-neutral-1);\",\n \"--kos-primary-2\": \"var(--palette-neutral-2);\",\n \"--kos-primary-3\": \"var(--palette-neutral-3);\",\n \"--kos-primary-4\": \"var(--palette-neutral-4);\",\n \"--kos-primary-5\": \"var(--palette-neutral-5);\",\n \"--kos-primary-6\": \"var(--palette-neutral-6);\",\n \"--kos-primary-7\": \"var(--palette-neutral-7);\",\n \"--kos-primary-8\": \"var(--palette-neutral-8);\",\n \"--kos-primary-9\": \"var(--palette-neutral-9);\",\n \"--kos-accent-1\": \"var(--palette-blue-1)\",\n \"--kos-accent-2\": \"var(--palette-blue-2)\",\n \"--kos-accent-3\": \"var(--palette-blue-3)\",\n \"--kos-accent-4\": \"var(--palette-blue-4)\",\n \"--kos-accent-5\": \"var(--palette-blue-5)\",\n \"--kos-accent-6\": \"var(--palette-blue-6)\",\n \"--kos-accent-7\": \"var(--palette-blue-7)\",\n \"--kos-accent-8\": \"var(--palette-blue-8)\",\n \"--kos-accent-9\": \"var(--palette-blue-9)\",\n \"--kos-primary-color\": \"var(--kos-primary-8);\",\n \"--kos-border-color\": \"var(--palette-neutral-3)\",\n \"--kos-primary-color-hover\": \"var(--kos-primary-7);\",\n \"--kos-primary-color-active\": \"var(--kos-primary-9);\",\n \"--kos-primary-color-outline\": \"var(--kos-primary-6);\",\n \"--kos-background-color\": \"var(--palette-neutral-1);\",\n \"--kos-background-color-hover\": \"var(--palette-neutral-1);\",\n \"--kos-background-color-active\": \"var(--palette-neutral-1);\",\n \"--kos-background-color-outline\": \"var(--palette-neutral-1);\",\n \"--kos-accent-background-color\": \"var(--kos-primary-9);\",\n \"--kos-accent-typography-color\": \"white;\",\n \"--kos-typography-color\": \"var(--palette-neutral-9);\",\n\n \"--kos-typography-color-hover\": \"var(--kos-primary-color-hover);\",\n \"--kos-typography-color-selected\": \"var(--kos-primary-color-active);\",\n \"--kos-app-header-background-color\": \"var(--kos-accent-background-color);\",\n \"--kos-app-header-typography-color\": \"white;\",\n \"--kos-app-sidebar-background-color\": \"var(--kos-layer-1-color);\",\n \"--kos-page-header-background-color\": \"var(--kos-layer-2-color);\",\n \"--kos-artifact-qualifier-tag-color\": \"var(--kos-accent-6);\",\n\n \"--kos-table-header-background-color\": \"var(--kos-accent-background-color);\",\n \"--kos-table-header-typography-color\": \"var(--kos-accent-typography-color);\",\n \"--kos-list-item-header-background-color\": \"white;\",\n\n \"--kos-typography-color-link\": \"hsl(204, 97%, 40%);\",\n \"--kos-typography-color-link-hover\": \"hsl(204, 97%, 60%);\",\n \"--kos-list-item-color-selected\": \"hsl(204, 97%, 47%);\",\n \"--kos-list-item-icon-color-selected\": \"white\",\n\n \"--kos-accent-color\": \"#048FEC\",\n \"--kos-primary-button-color\": \"#048FEC\",\n \"--kos-primary-button-hover-color\": \"#40A9FF\",\n \"--kos-primary-button-active-color\": \"#096DD9\",\n \"--kos-primary-button-text-color\": \"#FFFFFF\",\n \"--kos-shell-menu-button-hover-color\": \"var(--kos-generic-color-grey-70)\",\n};\n\nexport const studioDarkColors = {\n \"--kos-layer-1-color\": \"var(--palette-neutral-2);\",\n \"--kos-layer-2-color\": \"var(--palette-neutral-1);\",\n \"--kos-layer-3-color\": \"var(--palette-neutral-0);\",\n \"--kos-primary-1\": \"var(--palette-neutral-1);\",\n \"--kos-primary-2\": \"var(--palette-neutral-2);\",\n \"--kos-primary-3\": \"var(--palette-neutral-3);\",\n \"--kos-primary-4\": \"var(--palette-neutral-4);\",\n \"--kos-primary-5\": \"var(--palette-neutral-5);\",\n \"--kos-primary-6\": \"var(--palette-neutral-6);\",\n \"--kos-primary-7\": \"var(--palette-neutral-7);\",\n \"--kos-primary-8\": \"var(--palette-neutral-8);\",\n \"--kos-primary-9\": \"var(--palette-neutral-9);\",\n \"--kos-accent-1\": \"var(--palette-blue-1)\",\n \"--kos-accent-2\": \"var(--palette-blue-2)\",\n \"--kos-accent-3\": \"var(--palette-blue-3)\",\n \"--kos-accent-4\": \"var(--palette-blue-4)\",\n \"--kos-accent-5\": \"var(--palette-blue-5)\",\n \"--kos-accent-6\": \"var(--palette-blue-6)\",\n \"--kos-accent-7\": \"var(--palette-blue-7)\",\n \"--kos-accent-8\": \"var(--palette-blue-8)\",\n \"--kos-accent-9\": \"var(--palette-blue-9)\",\n \"--kos-primary-color\": \"var(--kos-primary-8);\",\n \"--kos-border-color\": \"var(--palette-neutral-3)\",\n \"--kos-primary-color-hover\": \"var(--kos-primary-7);\",\n \"--kos-primary-color-active\": \"var(--kos-primary-9);\",\n \"--kos-primary-color-outline\": \"var(--kos-primary-6);\",\n \"--kos-background-color\": \"var(--palette-neutral-1);\",\n \"--kos-background-color-hover\": \"var(--palette-neutral-1);\",\n \"--kos-background-color-active\": \"var(--palette-neutral-1);\",\n \"--kos-background-color-outline\": \"var(--palette-neutral-1);\",\n \"--kos-accent-background-color\": \"var(--kos-primary-9);\",\n \"--kos-accent-typography-color\": \"white;\",\n \"--kos-typography-color\": \"var(--palette-neutral-9);\",\n\n \"--kos-typography-color-hover\": \"var(--kos-primary-color-hover);\",\n \"--kos-typography-color-selected\": \"var(--kos-primary-color-active);\",\n \"--kos-app-header-background-color\": \"var(--kos-accent-background-color);\",\n \"--kos-app-header-typography-color\": \"white;\",\n \"--kos-app-sidebar-background-color\": \"var(--kos-layer-1-color);\",\n \"--kos-page-header-background-color\": \"var(--kos-layer-2-color);\",\n \"--kos-artifact-qualifier-tag-color\": \"var(--kos-accent-6);\",\n\n \"--kos-table-header-background-color\": \"var(--kos-accent-background-color);\",\n \"--kos-table-header-typography-color\": \"var(--kos-accent-typography-color);\",\n \"--kos-list-item-header-background-color\": \"white;\",\n\n \"--kos-typography-color-link\": \"hsl(204, 97%, 40%);\",\n \"--kos-typography-color-link-hover\": \"hsl(204, 97%, 60%);\",\n \"--kos-list-item-color-selected\": \"hsl(204, 97%, 47%);\",\n \"--kos-list-item-icon-color-selected\": \"white\",\n\n \"--kos-accent-color\": \"var(--kos-generic-color-blue-primary)\",\n \"--kos-primary-button-color\": \"var(--kos-generic-color-blue-primary)\",\n \"--kos-primary-button-hover-color\": \"#40A9FF\",\n \"--kos-primary-button-active-color\": \"#096DD9\",\n \"--kos-primary-button-text-color\": \"#FFFFFF\",\n};\n\n/**\n * Sourced from: https://www.figma.com/file/yjvuochvmg1GQXWBtXjqu5/kOS-Studio?type=design&node-id=1956-14370&mode=dev\n */\nexport const studioGenericColor = {\n \"--kos-generic-color-black\": \"#262626\",\n \"--kos-generic-color-blue-additional-1\": \"#40A9FF\",\n \"--kos-generic-color-blue-additional-2\": \"#096DD9\",\n \"--kos-generic-color-blue-additional-3\": \"#C8E8FF\",\n \"--kos-generic-color-blue-primary\": \"#048FEC\",\n \"--kos-generic-color-grey-10\": \"#FAFAFA\",\n \"--kos-generic-color-grey-15\": \"#f1f1f1\",\n \"--kos-generic-color-grey-20\": \"#DFDFDF\",\n \"--kos-generic-color-grey-30\": \"#D9D9D9\",\n \"--kos-generic-color-grey-40\": \"#C4C4C4\",\n \"--kos-generic-color-grey-50\": \"#ABABAB\",\n \"--kos-generic-color-grey-60\": \"#868686\",\n \"--kos-generic-color-grey-70\": \"#484848\",\n \"--kos-generic-color-grey-80\": \"#2F2F2F\",\n \"--kos-generic-color-white\": \"#FFFFFF\",\n \"--kos-generic-table-header\": \"#F6F6F6\",\n \"--kos-system-orange\": \"#FF8500\",\n \"--kos-system-green\": \"#52C41A\",\n};\n","// prettier-ignore\nexport const studioComponentTokens = {\n //-------------------------------------\n // connection-manager...\n \"--kos-connection-manager-heading-font-family\": \"var(--kos-font-family)\",\n \"--kos-connection-manager-heading-font-size\": \"14px\",\n \"--kos-connection-manager-heading-font-style\": \"\",\n \"--kos-connection-manager-heading-font-weight\": \"\",\n \"--kos-connection-manager-heading-line-height\": \"\",\n\n \"--kos-connection-manager-item-heading-font-family\": \"\",\n \"--kos-connection-manager-item-heading-font-size\": \"\",\n \"--kos-connection-manager-item-heading-font-style\": \"\",\n \"--kos-connection-manager-item-heading-font-weight\": \"\",\n \"--kos-connection-manager-item-heading-line-height\": \"\",\n\n \"--kos-connection-manager-image-name-font-family\": \"\",\n \"--kos-connection-manager-image-name-font-size\": \"\",\n \"--kos-connection-manager-image-name-font-style\": \"\",\n \"--kos-connection-manager-image-name-font-weight\": \"\",\n \"--kos-connection-manager-image-name-line-height\": \"\",\n\n \"--kos-connection-manager-view-name-font-family\": \"\",\n \"--kos-connection-manager-view-name-font-size\": \"\",\n \"--kos-connection-manager-view-name-font-style\": \"\",\n \"--kos-connection-manager-view-name-font-weight\": \"\",\n \"--kos-connection-manager-view-name-line-height\": \"\",\n\n \"--kos-connection-manager-status-label-font-family\": \"\",\n \"--kos-connection-manager-status-label-font-size\": \"10px\",\n \"--kos-connection-manager-status-label-font-style\": \"\",\n \"--kos-connection-manager-status-label-font-weight\": \"\",\n \"--kos-connection-manager-status-label-line-height\": \"\",\n\n \"--kos-connection-manager-status-text-font-family\": \"\",\n \"--kos-connection-manager-status-text-font-size\": \"\",\n \"--kos-connection-manager-status-text-font-style\": \"\",\n \"--kos-connection-manager-status-text-font-weight\": \"\",\n \"--kos-connection-manager-status-text-line-height\": \"\",\n\n \"--kos-connection-manager-active-tools-heading-font-family\": \"\",\n \"--kos-connection-manager-active-tools-heading-font-size\": \"10px\",\n \"--kos-connection-manager-active-tools-heading-font-style\": \"\",\n \"--kos-connection-manager-active-tools-heading-font-weight\": \"700\",\n \"--kos-connection-manager-active-tools-heading-line-height\": \"\",\n\n \"--kos-connection-manager-active-tools-item-font-family\": \"\",\n \"--kos-connection-manager-active-tools-item-font-size\": \"10px\",\n \"--kos-connection-manager-active-tools-item-font-style\": \"\",\n \"--kos-connection-manager-active-tools-item-font-weight\": \"400\",\n \"--kos-connection-manager-active-tools-item-line-height\": \"\",\n\n \"--kos-connection-manager-start-new-tool-font-family\": \"\",\n \"--kos-connection-manager-start-new-tool-font-size\": \"12px\",\n \"--kos-connection-manager-start-new-tool-font-style\": \"\",\n \"--kos-connection-manager-start-new-tool-font-weight\": \"\",\n \"--kos-connection-manager-start-new-tool-line-height\": \"\",\n\n \"--kos-connection-manager-input-font-family\": \"\",\n \"--kos-connection-manager-input-font-size\": \"\",\n \"--kos-connection-manager-input-font-style\": \"\",\n \"--kos-connection-manager-input-font-weight\": \"\",\n \"--kos-connection-manager-input-line-height\": \"10px\",\n\n \"--kos-connection-manager-icon-small-font-size\": \"10px\",\n \"--kos-connection-manager-icon-medium-font-size\": \"12px\",\n\n \"--kos-connection-manager-icon-busy-color\": \"#0000F4\",\n \"--kos-connection-manager-icon-error-color\": \"#F40000\",\n \"--kos-connection-manager-icon-idle-color\": \"#858585\",\n \"--kos-connection-manager-icon-success-color\": \"#52C41A\",\n\n \"--kos-connection-manager-connecting-effect-background-color\": \"#ECFBDF\",\n\n //-------------------------------------\n // button...\n \"--kos-component-button-primary-background-color-default\": \"var(--kos-generic-color-blue-primary)\",\n \"--kos-component-button-primary-background-color-hover\": \"var(--kos-generic-color-blue-additional-1)\",\n \"--kos-component-button-primary-background-color-clicked\": \"var(--kos-generic-color-blue-additional-2)\",\n \"--kos-component-button-primary-background-color-disabled\": \"var(--kos-generic-color-grey-30)\",\n \"--kos-component-button-primary-border-color-default\": \"var(--kos-generic-color-blue-primary)\",\n \"--kos-component-button-primary-border-color-hover\": \"var(--kos-generic-color-blue-additional-1)\",\n \"--kos-component-button-primary-border-color-clicked\": \"var(--kos-generic-color-blue-additional-2)\",\n \"--kos-component-button-primary-border-color-disabled\": \"var(--kos-generic-color-grey-30)\",\n \"--kos-component-button-primary-color\": \"var(--kos-generic-color-white)\",\n\n \"--kos-component-button-secondary-background-color\": \"var(--kos-generic-color-white)\",\n \"--kos-component-button-secondary-background-color-disabled\": \"var(--kos-generic-color-grey-10)\",\n \"--kos-component-button-secondary-border-color-default\": \"var(--kos-generic-color-blue-primary)\",\n \"--kos-component-button-secondary-border-color-hover\": \"var(--kos-generic-color-blue-additional-1)\",\n \"--kos-component-button-secondary-border-color-clicked\": \"var(--kos-generic-color-blue-additional-2)\",\n \"--kos-component-button-secondary-border-color-disabled\": \"var(--kos-generic-color-grey-30)\",\n \"--kos-component-button-secondary-color-default\": \"var(--kos-generic-color-blue-primary)\",\n \"--kos-component-button-secondary-color-hover\": \"var(--kos-generic-color-blue-additional-1)\",\n \"--kos-component-button-secondary-color-clicked\": \"var(--kos-generic-color-blue-additional-2)\",\n \"--kos-component-button-secondary-color-disabled\": \"var(--kos-generic-color-grey-30)\",\n\n \"--kos-component-button-borderless-background-color\": \"transparent\",\n \"--kos-component-button-borderless-border-color\": \"transparent\",\n \"--kos-component-button-borderless-color-default\": \"var(--kos-generic-color-blue-primary)\",\n \"--kos-component-button-borderless-color-hover\": \"var(--kos-generic-color-blue-additional-1)\",\n \"--kos-component-button-borderless-color-clicked\": \"var(--kos-generic-color-blue-additional-2)\",\n \"--kos-component-button-borderless-color-disabled\": \"var(--kos-generic-color-grey-30)\",\n\n //-------------------------------------\n // checkbox...\n \"--kos-component-checkbox-default-background-color\": \"var(--kos-generic-color-white)\",\n \"--kos-component-checkbox-default-border-color-default\": \"var(--kos-generic-color-grey-30)\",\n \"--kos-component-checkbox-default-border-color-hover\": \"var(--kos-generic-color-grey-10)\",\n \"--kos-component-checkbox-default-border-color-clicked\": \"var(--kos-generic-color-grey-50)\",\n \"--kos-component-checkbox-default-color\": \"transparent\",\n\n // checkbox-filled, checkbox-intermediate...\n \"--kos-component-checkbox-filled-background-color-default\": \"var(--kos-generic-color-blue-primary)\",\n \"--kos-component-checkbox-filled-background-color-hover\": \"var(--kos-generic-color-blue-additional-1)\",\n \"--kos-component-checkbox-filled-background-color-clicked\": \"var(--kos-generic-color-blue-additional-2)\",\n \"--kos-component-checkbox-filled-border-color-default\": \"var(--kos-generic-color-blue-primary)\",\n \"--kos-component-checkbox-filled-border-color-hover\": \"var(--kos-generic-color-blue-additional-1)\",\n \"--kos-component-checkbox-filled-border-color-clicked\": \"var(--kos-generic-color-blue-additional-2)\",\n \"--kos-component-checkbox-filled-color\": \"var(--kos-generic-color-white)\",\n\n \"--kos-component-checkbox-disabled-background-color\": \"var(--kos-generic-color-grey-30)\",\n \"--kos-component-checkbox-disabled-border-color\": \"var(--kos-generic-color-grey-30)\",\n \"--kos-component-checkbox-disabled-color\": \"var(--kos-generic-color-white)\",\n\n // -------------------------------------\n // Simulator Configuration...\n \"--kos-simulator-config-details-border\": \"var(--kos-generic-color-grey-30)\",\n};\n","export const studioSize = {\n \"--kos-size-xxxxs\": \"1.5rem\",\n \"--kos-size-xxxs\": \"3rem\",\n \"--kos-size-xxs\": \"6rem\",\n \"--kos-size-xs\": \"12rem\",\n \"--kos-size-s\": \"15rem\",\n \"--kos-size-m\": \"20rem\",\n \"--kos-size-lg\": \"25rem\",\n \"--kos-size-xl\": \"40rem\",\n \"--kos-size-xxl\": \"60rem\",\n};\n\nexport const studioSizing = {\n \"--kos-border-radius-circle\": \"50%\",\n \"--kos-border-radius-large\": \"0.5rem\",\n \"--kos-border-radius-medium\": \"0.25rem\",\n \"--kos-border-radius-small\": \"0.125rem\",\n \"--kos-border-radius\": \"var(--kos-border-radius-medium)\",\n\n \"--kos-spacing-xxxs\": \".125rem\",\n \"--kos-spacing-xxs\": \".25rem\",\n \"--kos-spacing-xs\": \".5rem\",\n \"--kos-spacing-s\": \".75rem\",\n \"--kos-spacing-m\": \"1rem\",\n \"--kos-spacing-lg\": \"1.5rem\",\n \"--kos-spacing-xlg\": \"2rem\",\n \"--kos-spacing-xxlg\": \"3rem\",\n};\n","export const studioTypography = {\n \"--kos-font-family\": \"Arial, Helvetica, sans-serif\",\n\n \"--kos-line-height-body\": \"14.4px\",\n \"--kos-line-height-small\": \"12px\",\n \"--kos-line-height-body-modal\": \"14px\",\n \"--kos-line-height-body-bold\": \"13px\",\n \"--kos-line-height-card-title\": \"18px\",\n \"--kos-line-height-card-detail\": \"14px\",\n \"--kos-line-height-heading-small\": \"20px\",\n \"--kos-line-height-heading-medium\": \"24px\",\n \"--kos-line-height-heading-large\": \"30px\",\n\n \"--kos-font-family-body\": \"var(--kos-font-family)\",\n \"--kos-font-family-body-bold\": \"var(--kos-font-family)\",\n \"--kos-font-family-card-title\": \"var(--kos-font-family)\",\n \"--kos-font-family-card-detail\": \"var(--kos-font-family)\",\n \"--kos-font-family-heading-small\": \"var(--kos-font-family)\",\n \"--kos-font-family-heading-medium\": \"var(--kos-font-family)\",\n \"--kos-font-family-heading-large\": \"var(--kos-font-family)\",\n\n \"--kos-font-size-body-modal\": \"12px\",\n \"--kos-font-size-body\": \"12px\",\n \"--kos-font-size-body-bold\": \"14px\",\n \"--kos-font-size-card-title\": \"16px\",\n \"--kos-font-size-card-detail\": \"12px\",\n \"--kos-font-size-heading-small\": \"14px\",\n \"--kos-font-size-heading-medium\": \"16px\",\n \"--kos-font-size-heading-large\": \"20px\",\n\n \"--kos-font-weight-body\": \"400\",\n \"--kos-font-weight-body-bold\": \"700\",\n \"--kos-font-weight-card-title\": \"700\",\n \"--kos-font-weight-card-detail\": \"400\",\n \"--kos-font-weight-heading-small\": \"700\",\n \"--kos-font-weight-heading-medium\": \"700\",\n \"--kos-font-weight-heading-large\": \"700\",\n};\n\nexport const studioTypographySmall = {\n \"--kos-font-family\": \"Arial, Helvetica, sans-serif\",\n\n \"--kos-font-size-body\": \"8px\",\n \"--kos-font-size-body-bold\": \"9px\",\n \"--kos-font-size-heading-small\": \"14px\",\n \"--kos-font-size-heading-medium\": \"18px\",\n \"--kos-font-size-heading-large\": \"20px\",\n};\n","import { css } from \"@emotion/react\";\nimport {\n studioColors,\n studioDarkColors,\n studioGenericColor,\n studioLightColors,\n} from \"./color\";\nimport { studioComponentTokens } from \"./component\";\nimport { studioSize, studioSizing } from \"./spacing\";\nimport { studioTypography } from \"./typography\";\n\nexport const scrollbarStyle = css`\n scrollbar-gutter: stable;\n //AUTO might be the one that overlays things\n\n /* Hide scrollbar for IE, Edge, Firefox, and other browsers */\n scrollbar-width: thin; /* Firefox */\n overflow-y: auto;\n`;\n\nexport const studioTheme = () => css`\n :root {\n --kos-font-size-base: 10px;\n --kos-font-size-small: 10px;\n --kos-base-font-size: 12px;\n --kos-base-title-size: 14px;\n font-size: var(--kos-base-font-size);\n }\n :root {\n ${css(studioColors)}\n ${css(studioSizing)}\n ${css(studioSize)}\n ${css(studioGenericColor)}\n ${css(studioComponentTokens)}\n }\n\n ::-webkit-scrollbar {\n width: 8px;\n height: 8px;\n background-color: transparent;\n }\n\n ::-webkit-scrollbar-track {\n background: transparent;\n }\n\n ::-webkit-scrollbar-thumb {\n background-color: var(--kos-generic-color-blue-additional-3);\n border: 2px solid transparent;\n background-clip: content-box;\n border-radius: 8px;\n }\n\n ::-webkit-scrollbar-thumb:hover {\n background-color: var(--kos-generic-color-blue-additional-1);\n background-clip: content-box;\n }\n\n .ant-dropdown-menu-item {\n font-size: var(--kos-font-size-body) !important;\n line-height: var(--kos-line-height-body) !important;\n padding-block: var(--kos-spacing-xxs) !important;\n }\n\n .ant-dropdown-menu-submenu-title {\n font-size: var(--kos-font-size-body) !important;\n line-height: var(--kos-line-height-body) !important;\n padding-block: var(--kos-spacing-xxs) !important;\n }\n\n & .ant-btn-primary {\n background-color: var(--kos-primary-button-color);\n border: 1px solid var(--kos-primary-button-color);\n color: var(--kos-primary-button-text-color);\n }\n\n & .ant-btn-primary:not([disabled]):hover {\n border: 1px solid var(--kos-primary-button-hover-color);\n background-color: var(--kos-primary-button-hover-color);\n }\n & .ant-btn-primary:not([disabled]):focus {\n border: 1px solid var(--kos-primary-button-hover-color);\n background-color: var(--kos-primary-button-hover-color);\n }\n\n & .ant-btn-primary:not([disabled]):active {\n border: 1px solid var(--kos-primary-button-active-color);\n background-color: var(--kos-primary-button-active-color);\n background: var(--kos-primary-button-active-color);\n color: white;\n }\n & .ant-btn-default:not(.ant-btn-icon-only) {\n border: 0;\n color: var(--kos-primary-button-color);\n }\n\n & .ant-btn-default:not(.ant-btn-icon-only):not([disabled]):hover {\n border: 0;\n color: var(--kos-primary-button-hover-color);\n }\n\n & .ant-btn-default:not(.ant-btn-icon-only):not([disabled]):active {\n border: 0;\n color: var(--kos-primary-button-active-color);\n }\n\n @media (-webkit-max-device-pixel-ratio: 1.25) {\n :root {\n ${css(studioTypography)}\n }\n }\n @media (-webkit-min-device-pixel-ratio: 1.25) {\n :root {\n ${css(studioTypography)}\n }\n }\n @media (prefers-color-scheme: light) {\n :root {\n ${css(studioLightColors)}\n }\n }\n :root {\n --ant-primary-color: var(--kos-primary-color);\n --ant-primary-color-hover: var(--kos-primary-color-hover);\n --ant-primary-color-active: var(--kos-primary-color-active);\n --ant-primary-color-outline: var(--kos-primary-color-outline);\n --ant-primary-1: var(--kos-primary-1);\n --ant-primary-2: var(--kos-primary-2);\n --ant-primary-3: var(--kos-primary-3);\n --ant-primary-4: var(--kos-primary-4);\n --ant-primary-5: var(--kos-primary-5);\n --ant-primary-6: var(--kos-primary-6);\n --ant-primary-7: var(--kos-primary-7);\n --ant-font-size-base: var(--kos-font-size-base);\n }\n @media (prefers-color-scheme: dark) {\n :root {\n ${css(studioDarkColors)}\n }\n :root {\n --ant-primary-color: var(--kos-primary-color);\n --ant-primary-color-hover: var(--kos-primary-color-hover);\n --ant-primary-color-active: var(--kos-primary-color-active);\n --ant-primary-color-outline: var(--kos-primary-color-outline);\n --ant-primary-1: var(--kos-primary-1);\n --ant-primary-2: var(--kos-primary-2);\n --ant-primary-3: var(--kos-primary-3);\n --ant-primary-4: var(--kos-primary-4);\n --ant-primary-5: var(--kos-primary-5);\n --ant-primary-6: var(--kos-primary-6);\n --ant-primary-7: var(--kos-primary-7);\n --ant-font-size-base: var(--kos-font-size-base);\n }\n }\n`;\n","import { forwardRef, RefAttributes, ReactNode, Ref } from \"react\";\n\nexport function forwardRefWithGeneric<T, P = object>(\n render: (props: P, ref: Ref<T>) => ReactNode\n): (props: P & RefAttributes<T>) => ReactNode {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return forwardRef(render) as any;\n}\n","import { ClassNames } from \"@emotion/react\";\nimport styled from \"@emotion/styled\";\nimport { getComponentTokenHelpers } from \"../../../styles\";\nimport {\n CSSProperties,\n HtmlHTMLAttributes,\n ReactNode,\n type ForwardedRef,\n} from \"react\";\nimport { forwardRefWithGeneric } from \"../../utility/forward-ref-with-generic\";\n\nconst [ct] = getComponentTokenHelpers([\"text\"]);\n\nexport type TextVariants = \"h1\" | \"h2\" | \"body\" | \"small\";\n\nexport const TEXT_COLORS = [\n \"blue\",\n \"dark\",\n \"disabled\",\n \"green\",\n \"grey\",\n \"light\",\n \"red\",\n \"yellow\",\n \"orange\",\n] as const;\n\nexport type TextColors = (typeof TEXT_COLORS)[number];\n\nexport interface TextProps<T extends TextVariants>\n extends HtmlHTMLAttributes<HTMLSpanElement> {\n bold?: boolean;\n children: ReactNode;\n color?: TextColors;\n ellipsis?: boolean;\n lineClamp?: boolean;\n textAlign?: CSSProperties[\"textAlign\"];\n underline?: boolean;\n variant: T;\n}\n\nconst _Text = <T extends TextVariants>(\n {\n bold,\n children,\n color,\n ellipsis,\n lineClamp,\n textAlign,\n underline,\n variant,\n ...elementProps\n }: TextProps<T>,\n ref: ForwardedRef<HTMLSpanElement>\n) => (\n <ClassNames>\n {({ cx }) => (\n <StyledText\n data-variant={variant}\n data-alignment={textAlign}\n data-color={color}\n ref={ref}\n {...elementProps}\n className={cx(elementProps.className, {\n isBold: bold,\n isUnderlined: underline,\n isEllipsized: ellipsis,\n isLineClamped: lineClamp,\n })}\n >\n {children}\n </StyledText>\n )}\n </ClassNames>\n);\n\nexport const Text = forwardRefWithGeneric(_Text);\n\nconst TEXT_ALIGNMENTS: CSSProperties[\"textAlign\"][] = [\n \"left\",\n \"right\",\n \"center\",\n \"justify\",\n];\n\nconst StyledText = styled.span`\n font-family: ${ct(\"font-family\")};\n line-height: ${ct(\"line-height\")};\n vertical-align: bottom;\n font-weight: ${ct(\"font-weight-normal\")};\n margin: 0;\n color: inherit;\n &.isBold {\n font-weight: ${ct(\"font-weight-bold\")};\n }\n &.isEllipsized {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n }\n &.isLineClamped {\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n display: -webkit-box;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: normal;\n }\n &.isUnderlined {\n text-decoration: underline;\n }\n &[data-variant=\"h1\"] {\n font-size: ${ct(\"h1-size\")};\n font-weight: ${ct(\"font-weight-bold\")};\n }\n &[data-variant=\"h2\"] {\n font-size: ${ct(\"h2-size\")};\n font-weight: ${ct(\"font-weight-bold\")};\n }\n &[data-variant=\"body\"] {\n font-size: ${ct(\"body-size\")};\n }\n &[data-variant=\"small\"] {\n font-size: ${ct(\"small-size\")};\n }\n ${TEXT_ALIGNMENTS.map(\n (alignment) =>\n `&[data-alignment=\"${alignment}\"] {\n text-align: ${alignment};\n }`\n ).join(\"\\n\")}\n ${TEXT_COLORS.map(\n (color) => `&[data-color=\"${color}\"] {\n color: ${ct(`color-${color}`)};\n }`\n ).join(\"\\n\")}\n`;\n","import { css } from \"@emotion/react\";\nimport { getComponentTokenHelpers } from \"../../../styles\";\nimport { HTMLProps, ReactNode } from \"react\";\n\nconst [ct] = getComponentTokenHelpers([\"link\"]);\n\ntype LinkSizes = \"sm\" | \"med\" | \"lrg\" | \"xlrg\";\n\nexport interface LinkProps extends Omit<HTMLProps<HTMLSpanElement>, \"size\"> {\n children: ReactNode;\n onClick: VoidFunction;\n size?: LinkSizes;\n isDisabled?: boolean;\n}\n\nexport const Link = ({\n children,\n onClick,\n size = \"med\",\n isDisabled,\n ...spanProps\n}: LinkProps) => (\n <span\n css={css`\n ${BaseLinkStyles}\n font-size: ${ct(`font-size-${size}`)};\n `}\n onClick={onClick}\n className={isDisabled ? \"isDisabled\" : undefined}\n {...spanProps}\n >\n {children}\n </span>\n);\n\nconst BaseLinkStyles = css`\n font-weight: ${ct(\"font-weight\")};\n font-family: ${ct(\"font-family\")};\n line-height: ${ct(\"line-height\")};\n color: ${ct(\"color\")};\n transition: color 0.125s ease-in-out;\n cursor: pointer;\n &:hover:not(.isDisabled) {\n color: ${ct(\"color-hover\")};\n }\n &:active:not(.isDisabled) {\n color: ${ct(\"color-active\")};\n }\n &.isDisabled {\n color: ${ct(\"color-disabled\")};\n pointer-events: none;\n }\n`;\n","import type { HTMLProps } from \"react\";\n\nexport type IconIds =\n | \"AccountBook\"\n | \"Aim\"\n | \"Alert\"\n | \"AlignCenter\"\n | \"AlignLeft\"\n | \"AlignRight\"\n | \"Android\"\n | \"Apartment\"\n | \"Api\"\n | \"Apple\"\n | \"Appstore\"\n | \"AppstoreAdd\"\n | \"AreaChart\"\n | \"ArrowDown\"\n | \"ArrowLeft\"\n | \"ArrowLineDown\"\n | \"ArrowRight\"\n | \"ArrowsAlt\"\n | \"ArrowUp\"\n | \"Artifact\"\n | \"ArtifactBrowser\"\n | \"ArtifactBrowserTool\"\n | \"ArtifactLocal\"\n | \"ArtifactManagerTool\"\n | \"ArtifactMarket\"\n | \"ArtifactMgmt\"\n | \"ArtifactOrg\"\n | \"ArtifactStoresTool\"\n | \"Audio\"\n | \"AudioMuted\"\n | \"Audit\"\n | \"Backward\"\n | \"Bank\"\n | \"BarChart\"\n | \"Barcode\"\n | \"Bars\"\n | \"Bell\"\n | \"BgColors\"\n | \"Block\"\n | \"Bold\"\n | \"Book\"\n | \"Border\"\n | \"BorderBottom\"\n | \"BorderHorizontal\"\n | \"BorderInner\"\n | \"BorderLeft\"\n | \"BorderlessTable\"\n | \"BorderOuter\"\n | \"BorderRight\"\n | \"BorderTop\"\n | \"BorderVerticle\"\n | \"BoxPlot\"\n | \"Branches\"\n | \"Bug\"\n | \"Build\"\n | \"Bulb\"\n | \"BulbFilled\"\n | \"Calculator\"\n | \"Calendar\"\n | \"Camera\"\n | \"CaretDown\"\n | \"CaretLeft\"\n | \"CaretRight\"\n | \"CaretUp\"\n | \"CarryOut\"\n | \"Check\"\n | \"CheckCircle\"\n | \"CheckSmall\"\n | \"CheckSquare\"\n | \"Ci\"\n | \"Clear\"\n | \"ClockCircle\"\n | \"Close\"\n | \"CloseCircle\"\n | \"CloseSquare\"\n | \"Cloud\"\n | \"CloudCrossedOut\"\n | \"CloudDownload\"\n | \"CloudServer\"\n | \"CloudSync\"\n | \"CloudUpload\"\n | \"Cluster\"\n | \"Code\"\n | \"Codepen\"\n | \"Coffee\"\n | \"ColumnHeightOutlined\"\n | \"ColumnWidthOutlined\"\n | \"Comment\"\n | \"Compass\"\n | \"Compress\"\n | \"ConsoleSql\"\n | \"Contacts\"\n | \"Container\"\n | \"Control\"\n | \"Copy\"\n | \"CopyFilled\"\n | \"CopyPlus\"\n | \"Copyright\"\n | \"CopyrightCircle\"\n | \"CreditCard\"\n | \"Crown\"\n | \"CustomerService\"\n | \"Dash\"\n | \"Dashboard\"\n | \"Database\"\n | \"DeleteColumn\"\n | \"DeleteOutlined\"\n | \"DeleteRow\"\n | \"DeliveredProcedure\"\n | \"DeploymentUnit\"\n | \"Desktop\"\n | \"Diagnostics\"\n | \"Diff\"\n | \"Disconnect\"\n | \"Dislike\"\n | \"Dollar\"\n | \"DollarCircle\"\n | \"Dot\"\n | \"DotChart\"\n | \"DoubleDown\"\n | \"DoubleLeft\"\n | \"DoubleRight\"\n | \"Down\"\n | \"DownCircle\"\n | \"Download\"\n | \"DownSquare\"\n | \"Drag\"\n | \"Edit\"\n | \"Ellipsis\"\n | \"Enter\"\n | \"Environment\"\n | \"Euro\"\n | \"EuroCircle\"\n | \"Exception\"\n | \"Exclamation\"\n | \"ExclamationCircle\"\n | \"Expand\"\n | \"ExpandAlt\"\n | \"Experiment\"\n | \"Export\"\n | \"Eye\"\n | \"EyeInvisible\"\n | \"Facebook\"\n | \"Fall\"\n | \"FastBackward\"\n | \"FastForward\"\n | \"FieldBinary\"\n | \"FieldNumber\"\n | \"FieldString\"\n | \"FieldTime\"\n | \"File\"\n | \"FileAdd\"\n | \"FileDone\"\n | \"FileExcel\"\n | \"FileExclamation\"\n | \"FileImage\"\n | \"FileJpg\"\n | \"FileMarkdown\"\n | \"FilePdf\"\n | \"FilePpt\"\n | \"FileProtect\"\n | \"FileSearch\"\n | \"FileSync\"\n | \"FileText\"\n | \"FileUnknown\"\n | \"FileWord\"\n | \"FileZip\"\n | \"Filter\"\n | \"Fire\"\n | \"Flag\"\n | \"Fold\"\n | \"Folder\"\n | \"FolderAdd\"\n | \"FolderOpen\"\n | \"FolderView\"\n | \"FontColors\"\n | \"FontSize\"\n | \"Fork\"\n | \"Form\"\n | \"FormatPainter\"\n | \"Forward\"\n | \"Frown\"\n | \"Fullscreen\"\n | \"FullscreenExit\"\n | \"Function\"\n | \"Fund\"\n | \"FundProjectionScreen\"\n | \"FundView\"\n | \"FunnelPlotOutlined\"\n | \"FutureTracerEventEnd\"\n | \"FutureTracerEventEndFilled\"\n | \"FutureTracerEventStart\"\n | \"FutureTracerEventStartFilled\"\n | \"FutureTracerTool\"\n | \"Gateway\"\n | \"Gif\"\n | \"Gift\"\n | \"Github\"\n | \"Global\"\n | \"Gold\"\n | \"Group\"\n | \"HardwareProfileManagement\"\n | \"Hdd\"\n | \"Heart\"\n | \"HeatMap\"\n | \"Highlight\"\n | \"History\"\n | \"Home\"\n | \"HomeFilled\"\n | \"Hourglass\"\n | \"Idcard\"\n | \"Import\"\n | \"Inbox\"\n | \"Info\"\n | \"InfoCircle\"\n | \"Inherited\"\n | \"InsertRowAbove\"\n | \"InsertRowBelow\"\n | \"InsertRowLeft\"\n | \"InsertRowRight\"\n | \"Instagram\"\n | \"Insurance\"\n | \"Interaction\"\n | \"IssuesClose\"\n | \"Italic\"\n | \"KabViewer\"\n | \"Key\"\n | \"KeySet\"\n | \"NodeDiscovery\"\n | \"Laptop\"\n | \"Layer\"\n | \"Layout\"\n | \"Left\"\n | \"LeftCircle\"\n | \"LeftSquare\"\n | \"Like\"\n | \"Line\"\n | \"LineChart\"\n | \"LineHeight\"\n | \"Link\"\n | \"Linkedin\"\n | \"Loading\"\n | \"Loading3Quarters\"\n | \"Lock\"\n | \"Login\"\n | \"LogoLight\"\n | \"Logout\"\n | \"MacCommand\"\n | \"Mail\"\n | \"Man\"\n | \"MedicineBox\"\n | \"Meh\"\n | \"MergeCells\"\n | \"Minus\"\n | \"MinusCircle\"\n | \"MinusSquare\"\n | \"Mobile\"\n | \"MoneyCollect\"\n | \"Monitor\"\n | \"More\"\n | \"NodeCollapse\"\n | \"NodeExpand\"\n | \"NodeIndex\"\n | \"Notification\"\n | \"Number\"\n | \"OneToOne\"\n | \"OrderedList\"\n | \"PaperClip\"\n | \"Partition\"\n | \"Pause\"\n | \"PauseCircle\"\n | \"PayCircle\"\n | \"Percentage\"\n | \"Phone\"\n | \"PicCenter\"\n | \"PicLeft\"\n | \"PicRight\"\n | \"Picture\"\n | \"PieChart\"\n | \"PlayCircle\"\n | \"PlaySquare\"\n | \"Plus\"\n | \"PlusCircle\"\n | \"PlusSquare\"\n | \"Pound\"\n | \"PoundCircle\"\n | \"Poweroff\"\n | \"Printer\"\n | \"Profile\"\n | \"Project\"\n | \"PropertySafety\"\n | \"PullRequest\"\n | \"Pushpin\"\n | \"Qrcode\"\n | \"Question\"\n | \"QuestionCircle\"\n | \"RadarChart\"\n | \"RadiusBottomleft\"\n | \"RadiusBottomright\"\n | \"RadiusSettingOutlined\"\n | \"RadiusUpleft\"\n | \"RadiusUpright\"\n | \"Read\"\n | \"Reconciliation\"\n | \"RedEnvelope\"\n | \"Redo\"\n | \"Reload\"\n | \"Rest\"\n | \"Retweet\"\n | \"Right\"\n | \"RightCircle\"\n | \"RightSquare\"\n | \"RightSquareFilled\"\n | \"Rise\"\n | \"Robot\"\n | \"Rocket\"\n | \"Rollback\"\n | \"RotateLeft\"\n | \"RotateRight\"\n | \"Safety\"\n | \"SafetyCertificate\"\n | \"Save\"\n | \"Scan\"\n | \"Schedule\"\n | \"Scissor\"\n | \"Search\"\n | \"SecurityScan\"\n | \"Select\"\n | \"Send\"\n | \"Setting\"\n | \"Shake\"\n | \"ShareAlt\"\n | \"Shop\"\n | \"Shopping\"\n | \"ShoppingCart\"\n | \"Shrink\"\n | \"Sisternode\"\n | \"Skin\"\n | \"SlackSquare\"\n | \"SlidersOutlined\"\n | \"SmallDash\"\n | \"Smile\"\n | \"Snippets\"\n | \"Solution\"\n | \"Sort\"\n | \"SortAscending\"\n | \"SortDescending\"\n | \"Sound\"\n | \"SplitCells\"\n | \"Star\"\n | \"StarFilled\"\n | \"StepBackward\"\n | \"StepForward\"\n | \"Stock\"\n | \"Stop\"\n | \"StoreMgmt\"\n | \"Strikethrough\"\n | \"Subnode\"\n | \"Swap\"\n | \"SwapLeft\"\n | \"SwapRight\"\n | \"Switcher\"\n | \"Sync\"\n | \"Table\"\n | \"Tablet\"\n | \"Tag\"\n | \"Tags\"\n | \"Team\"\n | \"TeamShortcut\"\n | \"TeamShortcutsTool\"\n | \"Thunderbolt\"\n | \"Tool\"\n | \"TopBadge\"\n | \"ToTop\"\n | \"Trademark\"\n | \"Transaction\"\n | \"Translation\"\n | \"Trophy\"\n | \"Twitter\"\n | \"Underline\"\n | \"Undo\"\n | \"Unfold\"\n | \"Shrink\"\n | \"Ungroup\"\n | \"Unlock\"\n | \"UnorderedList\"\n | \"Up\"\n | \"UpCircle\"\n | \"Upload\"\n | \"UpSquare\"\n | \"Usb\"\n | \"User\"\n | \"UserAdd\"\n | \"UserDelete\"\n | \"UsergroupAdd\"\n | \"UsergroupDelete\"\n | \"UserSwitch\"\n | \"VerticalAlignBottom\"\n | \"VerticalAlignMiddle\"\n | \"VerticalAlignTop\"\n | \"VerticalLeft\"\n | \"VerticalRight\"\n | \"Wallet\"\n | \"Warning\"\n | \"WebsocketMonitorTool\"\n | \"Wifi\"\n | \"Windows\"\n | \"Youtube\"\n | \"ZoomIn\"\n | \"IngredientAssignment\"\n | \"BeverageAvailabilityGraph\"\n | \"LogViewer\"\n | \"ConfigurationEditor\"\n | \"ManifestViewer\"\n | \"AccountSettings\"\n | \"ProjectsManagement\"\n | \"SSHKeys\"\n | \"UserManagement\"\n | \"APIKeys\"\n | \"APIBrowser\"\n | \"PerfMonitor\"\n | \"AuthenticateArtifactStores\"\n | \"MarketplaceTool\"\n | \"Messages\"\n | \"MyImagesTool\"\n | \"ZoomOut\"\n | \"BringToFront\";\n\nexport const iconColors = [\n \"black\",\n \"blue\",\n \"green\",\n \"grey\",\n \"orange\",\n \"purple\",\n \"red\",\n \"white\",\n \"yellow\",\n] as const;\n\nexport type IconColors = (typeof iconColors)[number];\n\nexport const iconSizes = [\n \"xxsm\",\n \"xsm\",\n \"sm\",\n \"med\",\n \"lrg\",\n \"xlrg\",\n \"xxlrg\",\n] as const;\n\nexport type IconSizes = (typeof iconSizes)[number];\n\nexport interface IconProps\n extends Omit<HTMLProps<SVGSVGElement>, \"as\" | \"size\"> {\n iconId: IconIds;\n size?: IconSizes;\n color?: IconColors;\n}\n","import { createContext, useContext, useMemo, type ReactNode } from \"react\";\n\ninterface BaseUIComponentsContextValue {\n basePath: string;\n}\n\nconst BaseUIComponentsContext =\n createContext<BaseUIComponentsContextValue | null>(null);\n\ninterface BaseUIComponentsContextProviderProps {\n children: ReactNode;\n // Used when refering public assets, such as the icon component\n // SVG sprite.\n publicPath?: string;\n}\n\nexport const BaseUIComponentsContextProvider = ({\n children,\n publicPath,\n}: BaseUIComponentsContextProviderProps) => {\n const value = useMemo<BaseUIComponentsContextValue>(() => {\n return {\n basePath: publicPath ?? \"/ui/\",\n };\n }, [publicPath]);\n\n return (\n <BaseUIComponentsContext.Provider value={value}>\n {children}\n </BaseUIComponentsContext.Provider>\n );\n};\n\nexport const useBaseUIComponentsContext = () => {\n const context = useContext(BaseUIComponentsContext);\n\n if (!context) {\n throw new Error(\n `BaseUIComponentsContext cannot be used outside of its provider.`\n );\n }\n\n return context;\n};\n","import { HTMLProps, forwardRef, memo } from \"react\";\n\nimport {\n IconIds,\n IconSizes,\n IconColors,\n iconColors,\n iconSizes,\n} from \"./common/types\";\nimport styled from \"@emotion/styled\";\nimport { getComponentTokenHelpers } from \"../../../styles\";\nimport { useBaseUIComponentsContext } from \"../base-ui-components-context/base-ui-components-context\";\n\nconst [ct] = getComponentTokenHelpers([\"icon\"]);\n\nexport interface IconProps\n extends Omit<HTMLProps<SVGSVGElement>, \"as\" | \"size\"> {\n iconId: IconIds;\n size?: IconSizes;\n color?: IconColors;\n}\n\nconst _Icon = forwardRef<SVGSVGElement, IconProps>(\n ({ iconId, size = \"sm\", color, ...rest }, ref) => {\n const { basePath } = useBaseUIComponentsContext();\n return (\n <StyledIcon\n viewBox=\"0 0 36 36\"\n ref={ref}\n data-size={size}\n data-color={color}\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <use href={`${basePath}icon-sprite.svg#${iconId}`} />\n </StyledIcon>\n );\n }\n);\n\nexport const Icon = memo(_Icon);\n\nIcon.displayName = \"Icon\";\n\nexport default Icon;\n\nconst StyledIcon = styled.svg`\n fill: currentColor;\n transition: fill 0.125s ease-in-out;\n\n // Colors\n ${iconColors\n .map(\n (color: IconColors) =>\n `&[data-color=\"${color}\"] {\n fill: ${ct(`fill-${color}`)};\n }`\n )\n .join(\"\")}\n\n // Sizes\n ${iconSizes\n .map(\n (size) =>\n `&[data-size=\"${size}\"] {\n max-height: ${ct(`size-${size}`)};\n max-width: ${ct(`size-${size}`)};\n min-height: ${ct(`size-${size}`)};\n min-width: ${ct(`size-${size}`)};\n }`\n )\n .join(\"\")}\n`;\n","import { memo, useMemo, type ReactNode } from \"react\";\nimport { stringComponentInsert } from \"../../../helpers/string-component-insert\";\nimport styled from \"@emotion/styled\";\nimport { Text } from \"../../atoms/text\";\nimport { Link } from \"../../atoms/link\";\nimport { getComponentTokenHelpers } from \"../../../styles\";\nimport { IconColors, IconIds, IconSizes, Icon } from \"../../atoms/icon\";\n\nconst [ct] = getComponentTokenHelpers([\"actionable-blurb\"]);\n\nexport interface ActionableBlurbProps {\n text: string;\n icon: IconIds;\n iconColor?: IconColors;\n iconSize?: IconSizes;\n title: string;\n className?: string;\n actions?: { actionText: string; action: VoidFunction }[];\n}\n\nexport const ActionableBlurb = memo(\n ({\n text,\n actions,\n icon,\n title,\n iconColor,\n iconSize,\n className,\n }: ActionableBlurbProps) => {\n const toRender = useMemo(() => {\n if (!actions) return text;\n\n let comp: string | ReactNode[] = text;\n\n actions.forEach(({ action, actionText }) => {\n comp = stringComponentInsert(comp, actionText, (match) => (\n <Link key={match} onClick={action}>\n {match}\n </Link>\n ));\n });\n\n return comp;\n }, [actions, text]);\n\n return (\n <StyledActionableBlurb className={className}>\n <IconWrapper>\n <Icon\n iconId={icon}\n size={iconSize ?? \"xsm\"}\n color={iconColor ?? \"black\"}\n />\n </IconWrapper>\n <BlurbWrapper className=\"blurb-wrapper\">\n <Text color=\"dark\" variant=\"body\" bold>\n {title}\n </Text>\n <Text color=\"dark\" variant=\"body\">\n {toRender}\n </Text>\n </BlurbWrapper>\n </StyledActionableBlurb>\n );\n }\n);\n\nconst StyledActionableBlurb = styled.div`\n width: 100%;\n display: grid;\n grid-template-columns: ${ct(\"icon-column-width\")} 1fr;\n`;\n\nconst IconWrapper = styled.div`\n height: 100%;\n display: flex;\n align-items: flex-start;\n justify-content: flex-start;\n`;\n\nconst BlurbWrapper = styled.div`\n display: flex;\n align-items: flex-start;\n justify-content: flex-start;\n flex-direction: column;\n row-gap: ${ct(\"row-gap\")};\n`;\n","import { createContext, useContext, useMemo, useState } from \"react\";\nimport { CollapsibleOptions } from \"../common/types\";\n\n/**\n * Memoizes the CollapsibleContext's value object, and handles instantiating\n * its open status / handler as controlled or uncontrolled.\n */\nexport const useCollapsibleContextValue = ({\n defaultOpen = false,\n open: controlledOpen,\n onOpenChange: setControlledOpen,\n}: CollapsibleOptions) => {\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n\n const open = controlledOpen ?? uncontrolledOpen;\n const setOpen = setControlledOpen ?? setUncontrolledOpen;\n\n return useMemo(() => {\n return {\n open,\n setOpen,\n };\n }, [open, setOpen]);\n};\n\nexport const CollapsibleContext = createContext<ReturnType<\n typeof useCollapsibleContextValue\n> | null>(null);\n\nexport const useCollapsibleContext = () => {\n const context = useContext(CollapsibleContext);\n\n if (context == null) {\n throw new Error(\n \"Collapsible components must be wrapped in <Collapsible />\"\n );\n }\n\n return context;\n};\n","import { ReactNode, cloneElement, isValidElement, useCallback } from \"react\";\nimport { CollapsibleOptions } from \"./common/types\";\nimport {\n CollapsibleContext,\n useCollapsibleContext,\n useCollapsibleContextValue,\n} from \"./hooks/useCollapsibleContext\";\n\nexport interface CollapsibleProps extends CollapsibleOptions {\n children: ReactNode;\n}\n\n/**\n * The Collapsible component injects the drawer context into its child elements.\n */\nexport const Collapsible = ({ children, ...options }: CollapsibleProps) => {\n const value = useCollapsibleContextValue(options);\n\n return (\n <CollapsibleContext.Provider value={value}>\n {children}\n </CollapsibleContext.Provider>\n );\n};\n\ninterface CollapsibleTriggerProps {\n children: ReactNode;\n}\n\n/**\n * The Collapsible component handles passing the props necessary to open and close the\n * drawer to its child component. The child component accept an onClick handler.\n */\nexport const CollapsibleTrigger = ({ children }: CollapsibleTriggerProps) => {\n const { open, setOpen } = useCollapsibleContext();\n\n const onClick = useCallback(() => {\n setOpen(!open);\n }, [open, setOpen]);\n\n if (isValidElement(children)) {\n return cloneElement(children, {\n ...children.props,\n onClick,\n // Allows the child to style itself depending on the open status without needing to\n // grab it from the context.\n \"data-state\": open ? \"open\" : \"closed\",\n });\n }\n\n throw new Error(\"Passed CollapsibleTrigger an invalid element\");\n};\n\ninterface CollapsibleContentProps {\n children: ReactNode;\n}\n\nexport const CollapsibleContent = ({ children }: CollapsibleContentProps) => {\n const { open } = useCollapsibleContext();\n\n if (!open) return null;\n\n return children;\n};\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import { ButtonHTMLAttributes, forwardRef } from \"react\";\nimport Icon, { IconProps } from \"../icon/icon\";\nimport styled from \"@emotion/styled\";\nimport { getComponentTokenHelpers, getSemanticToken } from \"../../../styles\";\nimport { iconColors, type IconColors } from \"../icon/common/types\";\nimport cx from \"classnames\";\n\nconst [ct] = getComponentTokenHelpers([\"icon-button\"]);\n\nexport interface IconButtonProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, \"color\">,\n Pick<IconProps, \"color\" | \"iconId\" | \"size\"> {\n hasBadge?: boolean;\n badgeBorderColor?: IconColors;\n badgeColor?: IconColors;\n badgeOffset?: { x: number; y: number };\n isActive?: boolean;\n}\n\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(\n (\n {\n iconId,\n badgeOffset,\n badgeBorderColor = \"white\",\n color,\n className,\n size,\n type,\n isActive,\n badgeColor,\n hasBadge,\n ...buttonProps\n },\n ref\n ) => (\n <StyledIconButton\n className={cx({ isActive }, className)}\n type={type ?? \"button\"}\n ref={ref}\n {...buttonProps}\n >\n {hasBadge && (\n <IconButtonBadge\n data-size={size}\n data-border-color={badgeBorderColor ?? color}\n data-color={badgeColor ?? color}\n style={\n badgeOffset\n ? { right: badgeOffset.x, top: badgeOffset.y }\n : undefined\n }\n />\n )}\n <Icon\n size={size}\n color={buttonProps.disabled ? \"grey\" : color ?? \"white\"}\n iconId={iconId}\n className={\"icon-button-icon\"}\n />\n </StyledIconButton>\n )\n);\n\nconst StyledIconButton = styled.button`\n box-sizing: border-box;\n align-items: center;\n justify-content: center;\n display: flex;\n position: relative;\n border: 0px;\n background-color: ${ct(\"background-color\")};\n border-color: ${ct(\"border-color\")};\n border-radius: ${ct(\"border-radius\")};\n padding: ${ct(\"padding\")};\n cursor: ${ct(\"cursor\")};\n &:disabled {\n cursor: ${ct(\"disabled-cursor\")};\n }\n > .icon-button-icon {\n transition: fill-opacity 0.125s ease-in-out;\n }\n &:hover:not(:disabled) {\n > .icon-button-icon {\n fill-opacity: 0.85;\n }\n }\n &.isActive {\n background-color: ${ct(\"active-background-color\")};\n }\n`;\n\nconst IconButtonBadge = styled.div`\n position: absolute;\n border: 1.5px solid ${getSemanticToken(\"color-black\")};\n border-radius: 50%;\n top: ${ct(\"badge-top\")};\n right: ${ct(\"badge-right\")};\n transform: translate(50%, -50%);\n // Border Colors\n ${iconColors\n .map(\n (color: IconColors) =>\n `&[data-border-color=\"${color}\"] {\n border-color: ${ct(`badge-fill-${color}`)};\n }`\n )\n .join(\"\")}\n // Colors\n ${iconColors\n .map(\n (color: IconColors) =>\n `&[data-color=\"${color}\"] {\n background-color: ${ct(`badge-fill-${color}`)};\n }`\n )\n .join(\"\")}\n width: ${getSemanticToken(\"spacing-8\")};\n height: ${getSemanticToken(\"spacing-8\")};\n`;\n\nexport const LockedButton = styled(IconButton)`\n &.isLocked {\n cursor: url(\"/ui/custom-cursors/locked-cursor.png\"), not-allowed !important;\n }\n`;\n","import { memo } from \"react\";\nimport { useCollapsibleContext } from \"../../../atoms/collapsible/hooks/useCollapsibleContext\";\nimport { Text } from \"../../../atoms/text\";\nimport styled from \"@emotion/styled\";\n\ninterface CollapsibleArtifactDescriptionProps {\n description?: string;\n}\n\nexport const CollapsibleArtifactDescription = memo(\n ({ description }: CollapsibleArtifactDescriptionProps) => {\n const { open } = useCollapsibleContext();\n\n return (\n <ArtifactDescriptionText\n color=\"grey\"\n variant=\"small\"\n data-state={open ? \"open\" : \"closed\"}\n >\n {description}\n </ArtifactDescriptionText>\n );\n }\n);\n\nconst ArtifactDescriptionText = styled(Text<\"small\">)`\n width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n word-break: break-all;\n white-space: nowrap;\n &[data-state=\"open\"] {\n overflow: visible;\n white-space: normal;\n word-break: break-word;\n }\n`;\n","import {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"../../atoms/collapsible/collapsible\";\nimport styled from \"@emotion/styled\";\nimport { getComponentTokenHelpers } from \"../../../styles\";\nimport { ReactNode, memo, useCallback } from \"react\";\nimport { IconButton } from \"../../atoms/icon-button\";\nimport { Text } from \"../../atoms/text\";\nimport { css } from \"@emotion/react\";\nimport { CollapsibleArtifactDescription } from \"./components/collapsible-artifact-description\";\nimport type { ListItem } from \"../list\";\n\nconst [ct] = getComponentTokenHelpers([\"collapsible-artifact\"]);\n\ninterface CollapsibleArtifactProps extends ListItem {\n description?: string;\n isSelected?: boolean;\n onExternalClick?: (id: string) => void;\n VersionList: ReactNode;\n className?: string;\n}\n\nexport const CollapsibleArtifact = memo(\n ({\n onExternalClick,\n id,\n name,\n isSelected,\n description,\n VersionList,\n className,\n }: CollapsibleArtifactProps) => {\n const _onExternalClick = useCallback(() => {\n if (onExternalClick) onExternalClick(id);\n }, [id, onExternalClick]);\n\n return (\n <Collapsible>\n <CollapsibleArtifactWrapper className={className}>\n <AlwaysPresentContent>\n <CollapsibleTrigger>\n <TriggerCaretButton\n color=\"black\"\n size=\"xxsm\"\n iconId=\"CaretRight\"\n />\n </CollapsibleTrigger>\n <ArtifactInfo>\n <ArtifactNameRow>\n <Text\n css={css`\n word-break: break-all;\n `}\n variant=\"small\"\n bold\n >\n {name}\n </Text>\n {!!isSelected && (\n <Text variant=\"small\" color=\"blue\">\n Selected\n </Text>\n )}\n </ArtifactNameRow>\n {description && (\n <CollapsibleArtifactDescription description={description} />\n )}\n </ArtifactInfo>\n {!!onExternalClick && (\n <ExternalButton\n color=\"blue\"\n iconId=\"Export\"\n onClick={_onExternalClick}\n size=\"xsm\"\n />\n )}\n </AlwaysPresentContent>\n <CollapsibleContent>\n <ListContainer>\n <ListContent>{VersionList}</ListContent>\n </ListContainer>\n </CollapsibleContent>\n </CollapsibleArtifactWrapper>\n </Collapsible>\n );\n }\n);\n\nconst CollapsibleArtifactWrapper = styled.div`\n align-items: flex-start;\n background-color: ${ct(\"background-color\")};\n border-radius: ${ct(\"border-radius\")};\n border: ${ct(\"border-width\")} solid ${ct(\"border-color\")};\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n position: relative;\n width: 100%;\n`;\n\nconst ExternalButton = styled(IconButton)`\n z-index: 1;\n`;\n\nconst AlwaysPresentContent = styled.div`\n align-items: flex-start;\n display: flex;\n gap: ${ct(\"name-and-selected-spacing\")};\n padding: ${ct(\"padding\")};\n width: 100%;\n`;\n\nconst TriggerCaretButton = styled(IconButton)`\n z-index: 1;\n\n &[data-state=\"open\"] {\n transform: rotate(90deg);\n }\n`;\n\nconst ArtifactInfo = styled.div`\n display: flex;\n flex-direction: column;\n flex: 1;\n gap: ${ct(\"name-and-desc-spacing\")};\n overflow: hidden;\n`;\n\nconst ArtifactNameRow = styled.div`\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n flex: 1;\n gap: ${ct(\"name-and-selected-spacing\")};\n justify-content: flex-start;\n width: 100%;\n`;\n\nconst ListContainer = styled.div`\n border-top: 1px solid ${ct(\"border-color\")};\n width: 100%;\n`;\n\nconst ListContent = styled.div`\n padding: ${ct(\"name-and-selected-spacing\")};\n width: 100%;\n`;\n","// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport const noop = () => {};\n","import { useReducer } from \"react\";\n\ntype Config = { [key: string]: { [subkey: string]: string } };\n\ntype State<T extends Config> = keyof T;\ntype Action<T extends object> = {\n [Key in keyof T & (string | number)]: T[Key] extends object\n ? `${Action<T[Key]>}`\n : `${Key}`;\n}[keyof T & (string | number)];\n\ntype Reducer<T extends Config> = (\n state: State<T>,\n event: Action<T>\n) => State<T>;\n\nconst machineReducer =\n <T extends Config>(machine: T): Reducer<T> =>\n (state, event) => {\n const nextState = machine[state][event];\n return nextState ?? state;\n };\n\n/**\n * An extension of React's useReducer hook to be used like a state machine\n */\nexport const useStateMachineReducer = <T extends Config>(\n initial: State<T>,\n machine: T\n) => useReducer(machineReducer(machine), initial);\n","import {\n useCallback,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\nimport { noop } from \"../../../helpers/noop\";\nimport { useStateMachineReducer } from \"../../../hooks/use-state-machine-reducer\";\nimport { flushSync } from \"react-dom\";\n\nconst getAnimationName = (styles?: CSSStyleDeclaration) =>\n styles?.animationName || \"none\";\n\n/**\n * A hook to help handle component mount / unmount animations.\n */\nexport const useAnimatePresence = (\n present: boolean,\n onPresenceChange?: (present: boolean) => void\n) => {\n const [node, setNode] = useState<HTMLElement>();\n const stylesRef = useRef<CSSStyleDeclaration | undefined>();\n const prevPresentRef = useRef(present);\n const prevAnimationNameRef = useRef<string>(\"none\");\n const onPresenceChangeRef = useRef<((present: boolean) => void) | undefined>(\n onPresenceChange\n );\n\n useLayoutEffect(() => {\n onPresenceChangeRef.current = onPresenceChange;\n }, [onPresenceChange]);\n\n const [state, send] = useStateMachineReducer(\n present ? \"mounted\" : \"unmounted\",\n {\n mounted: {\n UNMOUNT: \"unmounted\",\n ANIMATION_OUT: \"unmounting\",\n },\n unmounted: {\n MOUNT: \"mounted\",\n ANIMATION_END: \"unmounted\",\n },\n unmounting: {\n MOUNT: \"mounted\",\n ANIMATION_END: \"unmounted\",\n },\n }\n );\n\n useEffect(() => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n prevAnimationNameRef.current =\n state === \"mounted\" ? currentAnimationName : \"none\";\n }, [state]);\n\n useLayoutEffect(() => {\n // Handle sending machine events when the node's presence changes\n const styles = stylesRef.current;\n const wasPresent = prevPresentRef.current;\n const hasPresentChanged = wasPresent !== present;\n\n if (hasPresentChanged) {\n const prevAnimationName = prevAnimationNameRef.current;\n const currentAnimationName = getAnimationName(styles);\n if (present) {\n // Send the mount event if hook is told the element is mounted.\n send(\"MOUNT\");\n } else if (\n currentAnimationName === \"none\" ||\n styles?.display === \"none\"\n ) {\n // If unmounting and there is no exit animation or the element is hidden, animations won't run\n // so we unmount instantly\n send(\"UNMOUNT\");\n } else {\n // When `present` changes to `false`, we check changes to animation-name to\n // determine whether an animation has started.\n const isAnimating = prevAnimationName !== currentAnimationName;\n\n // If the component does have an exit animation, send the ANIMATION_OUT event to let\n // the animation complete before unmounting.\n if (wasPresent && isAnimating) {\n send(\"ANIMATION_OUT\");\n } else {\n send(\"UNMOUNT\");\n }\n }\n\n prevPresentRef.current = present;\n }\n }, [present, send]);\n\n useLayoutEffect(() => {\n // Handles attaching animation event listeners to the node being mounted / unmounted\n if (node) {\n /**\n * Triggering an ANIMATION_OUT during an ANIMATION_IN will fire an `animationcancel`\n * event for ANIMATION_IN after we have entered `unmounting` state. So, we\n * make sure we only trigger ANIMATION_END for the currently active animation.\n */\n const handleAnimationEnd = (event: AnimationEvent) => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n const isCurrentAnimation = currentAnimationName.includes(\n event.animationName\n );\n if (event.target === node && isCurrentAnimation) {\n // This update is applied a frame after the animation ends, creating a flash of visible content.\n // By manually flushing we ensure they sync within a frame, removing the flash.\n flushSync(() => send(\"ANIMATION_END\"));\n }\n };\n\n const handleAnimationStart = (event: AnimationEvent) => {\n if (event.target === node) {\n // if animation occurred, store its name as the previous animation.\n prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n }\n };\n\n node.addEventListener(\"animationstart\", handleAnimationStart);\n node.addEventListener(\"animationcancel\", handleAnimationEnd);\n node.addEventListener(\"animationend\", handleAnimationEnd);\n return () => {\n node.removeEventListener(\"animationstart\", handleAnimationStart);\n node.removeEventListener(\"animationcancel\", handleAnimationEnd);\n node.removeEventListener(\"animationend\", handleAnimationEnd);\n };\n } else {\n // Transition to the unmounted state if the node is removed prematurely.\n // We avoid doing so during cleanup as the node may change but still exist.\n send(\"ANIMATION_END\");\n return noop;\n }\n }, [node, send]);\n\n const ref = useCallback((node: HTMLElement) => {\n if (node) stylesRef.current = getComputedStyle(node);\n setNode(node);\n }, []);\n\n const isPresent = [\"mounted\", \"unmounting\"].includes(state);\n\n useEffect(() => {\n if (onPresenceChangeRef.current) onPresenceChangeRef.current(isPresent);\n }, [isPresent]);\n\n return {\n isPresent,\n ref,\n };\n};\n","import { useAnimatePresence } from \"./use-animate-presence\";\nimport { cloneElement, memo, ReactElement } from \"react\";\n\ninterface PresenceProps {\n children: ReactElement;\n present: boolean;\n onPresenceChange?: (present: boolean) => void;\n}\n\nconst AnimatePresence = memo(\n ({ present, children, onPresenceChange }: PresenceProps) => {\n const presence = useAnimatePresence(present, onPresenceChange);\n\n return presence.isPresent\n ? cloneElement(children, { ref: presence.ref, present })\n : null;\n }\n);\n\nAnimatePresence.displayName = \"AnimatePresence\";\n\nexport { AnimatePresence };\n","import styled from \"@emotion/styled\";\n\ninterface AlternatingStatusProps {\n offlineContent: React.ReactNode;\n onlineContent: React.ReactNode;\n}\n\nexport const AlternatingStatus = ({\n offlineContent,\n onlineContent,\n}: AlternatingStatusProps) => {\n if (!onlineContent) return offlineContent;\n if (!offlineContent) return onlineContent;\n\n return (\n <AlternatingWrapper>\n <AlternatingCube>\n <AlternatingFace $front>{offlineContent}</AlternatingFace>\n <AlternatingFace $back>{onlineContent}</AlternatingFace>\n </AlternatingCube>\n </AlternatingWrapper>\n );\n};\n\nconst AlternatingWrapper = styled.div`\n flex: 1;\n min-width: 0px;\n height: 100%;\n overflow: visible;\n perspective: 300px;\n perspective-origin: left center;\n`;\n\nconst AlternatingCube = styled.div`\n width: 100%;\n height: 100%;\n position: relative;\n transform-style: preserve-3d;\n animation: rotateCube 10s infinite ease-in-out;\n\n @keyframes rotateCube {\n 0%,\n 45% {\n transform: rotateX(0deg);\n }\n 50%,\n 95% {\n transform: rotateX(180deg);\n }\n 100% {\n transform: rotateX(360deg);\n }\n }\n`;\n\nconst AlternatingFace = styled.div<{ $front?: boolean; $back?: boolean }>`\n position: absolute;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n backface-visibility: hidden;\n\n ${({ $front }) =>\n $front &&\n `\n transform: rotateX(0deg) translateZ(20px);\n `}\n\n ${({ $back }) =>\n $back &&\n `\n transform: rotateX(180deg) translateZ(20px);\n `}\n`;\n","import styled from \"@emotion/styled\";\nimport { ButtonHTMLAttributes, forwardRef, memo } from \"react\";\nimport { IconIds } from \"../icon\";\nimport Icon from \"../icon/icon\";\nimport { ClassNames } from \"@emotion/react\";\nimport { getComponentTokenHelpers } from \"../../../styles\";\n\nconst [buttonCT, iconCT] = getComponentTokenHelpers([\"button\", \"icon\"]);\n\nexport type ButtonVariant =\n | \"primary\"\n | \"primary-small\"\n | \"secondary\"\n | \"secondary-small\"\n | \"borderless\"\n | \"borderless-small\";\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n variant: ButtonVariant;\n text: string;\n icon?: IconIds;\n disabled?: boolean;\n}\n\nconst _Button = forwardRef<HTMLButtonElement, ButtonProps>(\n ({ variant, text, disabled, className, icon, ...buttonProps }, ref) => (\n <ClassNames>\n {({ cx }) => (\n <StyledButton\n disabled={disabled}\n className={cx(variant, className)}\n ref={ref}\n {...buttonProps}\n >\n {icon && (\n <ButtonIconWrapper>\n <Icon iconId={icon} size=\"sm\" color=\"white\" />\n </ButtonIconWrapper>\n )}\n {text}\n </StyledButton>\n )}\n </ClassNames>\n )\n);\n\nexport const Button = memo(_Button);\n\nButton.displayName = \"StudioButton\";\n\nexport default Button;\n\nconst StyledButton = styled.button`\n font-weight: ${buttonCT(\"font-weight\")};\n font-size: ${buttonCT(\"font-size\")};\n line-height: ${buttonCT(\"line-height\")};\n border-radius: ${buttonCT(\"br\")};\n border-width: ${buttonCT(\"border-width\")};\n cursor: ${buttonCT(\"cursor\")};\n padding: ${`${buttonCT(\"ypadding\")} ${buttonCT(\"xpadding\")}`};\n border-style: solid;\n transition: border 0.125s ease-in-out, background 0.125s ease-in-out,\n color 0.125s ease-in-out;\n\n background-color: ${buttonCT(\"bg\")};\n color: ${buttonCT(\"color\")};\n border-color: ${buttonCT(\"border\")};\n display: flex;\n align-items: center;\n justify-content: flex-start;\n white-space: nowrap;\n // This token will let us flip the icon and text if we want to\n flex-direction: ${buttonCT(\"flex-direction\")};\n\n ${`${iconCT(\"fill-white\", true)}: ${buttonCT(\"color\")}`};\n\n &.primary-small,\n &.secondary-small,\n &.text-small {\n padding-top: ${buttonCT(\"ypadding-small\")};\n padding-bottom: ${buttonCT(\"ypadding-small\")};\n }\n\n &:hover {\n border-color: ${buttonCT(\"border-hover\")};\n color: ${buttonCT(\"color-hover\")};\n background-color: ${buttonCT(\"bg-hover\")};\n ${`${iconCT(\"fill-white\", true)}: ${buttonCT(\"color-hover\")}`};\n }\n\n &:active {\n border-color: ${buttonCT(\"border-active\")};\n color: ${buttonCT(\"color-active\")};\n background-color: ${buttonCT(\"bg-active\")};\n ${`${iconCT(\"fill-white\", true)}: ${buttonCT(\"color-active\")}`};\n }\n\n &:disabled {\n cursor: not-allowed;\n border-color: ${buttonCT(\"border-disabled\")};\n color: ${buttonCT(\"color-disabled\")};\n background-color: ${buttonCT(\"bg-disabled\")};\n ${`${iconCT(\"fill-white\", true)}: ${buttonCT(\"color-disabled\")}`};\n }\n\n // Re-assign bg and color vars for secondary buttons.\n &.secondary,\n &.secondary-small {\n background-color: ${buttonCT(\"bg-secondary\")};\n color: ${buttonCT(\"color-secondary\")};\n border-color: ${buttonCT(\"border-secondary\")};\n ${`${iconCT(\"fill-white\", true)}: ${buttonCT(\"color-secondary\")}`};\n &:hover {\n border-color: ${buttonCT(\"border-hover-secondary\")};\n color: ${buttonCT(\"color-hover-secondary\")};\n background-color: ${buttonCT(\"bg-hover-secondary\")};\n ${`${iconCT(\"fill-white\", true)}: ${buttonCT(\"color-hover-secondary\")}`};\n }\n\n &:active {\n border-color: ${buttonCT(\"border-active-secondary\")};\n color: ${buttonCT(\"color-active-secondary\")};\n background-color: ${buttonCT(\"bg-active-secondary\")};\n ${`${iconCT(\"fill-white\", true)}: ${buttonCT(\"color-active-secondary\")}`};\n }\n\n &:disabled {\n border-color: ${buttonCT(\"border-disabled-secondary\")};\n color: ${buttonCT(\"color-disabled-secondary\")};\n background-color: ${buttonCT(\"bg-disabled-secondary\")};\n ${`${iconCT(\"fill-white\", true)}: ${buttonCT(\n \"color-disabled-secondary\"\n )}`};\n }\n }\n\n // Re-assign bg, color, and border vars for borderless buttons.\n &.borderless,\n &.borderless-small {\n background-color: ${buttonCT(\"bg-borderless\")};\n color: ${buttonCT(\"color-borderless\")};\n border-color: ${buttonCT(\"border-borderless\")};\n ${`${iconCT(\"fill-white\", true)}: ${buttonCT(\"color-borderless\")}`};\n &:hover {\n border-color: ${buttonCT(\"border-hover-borderless\")};\n color: ${buttonCT(\"color-hover-borderless\")};\n background-color: ${buttonCT(\"bg-hover-borderless\")};\n ${`${iconCT(\"fill-white\", true)}: ${buttonCT(\"color-hover-borderless\")}`};\n }\n\n &:active {\n border-color: ${buttonCT(\"border-active-borderless\")};\n color: ${buttonCT(\"color-active-borderless\")};\n background-color: ${buttonCT(\"bg-active-borderless\")};\n ${`${iconCT(\"fill-white\", true)}: ${buttonCT(\n \"color-active-borderless\"\n )}`};\n }\n\n &:disabled {\n cursor: not-allowed;\n border-color: ${buttonCT(\"border-disabled-borderless\")};\n color: ${buttonCT(\"color-disabled-borderless\")};\n background-color: ${buttonCT(\"bg-disabled-borderless\")};\n ${`${iconCT(\"fill-white\", true)}: ${buttonCT(\n \"color-disabled-borderless\"\n )}`};\n }\n }\n`;\n\nconst ButtonIconWrapper = styled.span`\n display: flex;\n margin: ${buttonCT(\"icon-margin\")};\n`;\n","import styled from \"@emotion/styled\";\nimport { getComponentTokenHelpers } from \"../../../styles\";\nimport { forwardRef, type InputHTMLAttributes } from \"react\";\nimport { Icon } from \"../icon\";\n\nconst [ct] = getComponentTokenHelpers([\"checkbox\"]);\n\nexport const CheckBox = forwardRef<\n HTMLInputElement,\n InputHTMLAttributes<HTMLInputElement>\n>((props, ref) => (\n <CheckBoxWrapper>\n <CheckBoxInput ref={ref} {...props} type=\"checkbox\" />\n <IconWrapper className=\"check-icon\">\n <Icon iconId=\"CheckSmall\" size=\"xsm\" color=\"white\" />\n </IconWrapper>\n <IconWrapper className=\"minus-icon\">\n <Icon iconId=\"Minus\" size=\"xsm\" color=\"white\" />\n </IconWrapper>\n </CheckBoxWrapper>\n));\n\nconst CheckBoxWrapper = styled.div`\n height: ${ct(\"size\")};\n width: ${ct(\"size\")};\n pointer-events: none;\n position: relative;\n display: flex;\n flex-shrink: 0;\n border: ${ct(\"border-width\")} solid ${ct(\"border-color\")};\n background-color: ${ct(\"background-color\")};\n border-radius: ${ct(\"border-radius\")};\n overflow: hidden;\n cursor: pointer;\n transition: background 0.125s ease-in-out, border 0.125s ease-in-out;\n :has(> input:disabled) {\n background-color: ${ct(\"background-color-disabled\")};\n cursor: not-allowed;\n }\n :has(> input:checked),\n :has(> input:indeterminate) {\n background-color: ${ct(\"background-color-checked\")};\n border-color: ${ct(\"border-color-checked\")};\n }\n :has(> input:checked:disabled),\n :has(> input:indeterminate:disabled) {\n border-color: ${ct(\"border-color-checked-disabled\")};\n background-color: ${ct(\"background-color-checked-disabled\")};\n }\n`;\n\nconst IconWrapper = styled.div`\n opacity: 0;\n width: 100%;\n height: 100%;\n display: grid;\n place-content: center;\n transition: opacity 0.125s ease-in-out;\n pointer-events: none;\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1;\n`;\n\nconst CheckBoxInput = styled.input`\n margin: 0px;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n opacity: 0;\n z-index: 2;\n outline: none;\n pointer-events: all;\n cursor: pointer;\n :checked:not(:indeterminate) {\n ~ .check-icon {\n opacity: 1;\n }\n }\n :indeterminate {\n ~ .minus-icon {\n opacity: 1;\n }\n }\n`;\n","\nmodule.exports = function () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n};\n","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // avoid screen readers from reading out loud the text\n mark.ariaHidden = \"true\"\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n","import copy from \"copy-to-clipboard\";\nimport { useCallback, useRef, useState, type MouseEvent } from \"react\";\nimport { Text, type TextProps, type TextVariants } from \"../text\";\nimport { Icon } from \"../icon\";\nimport styled from \"@emotion/styled\";\n\nconst HOVER_TIMEOUT = 250;\nconst COPY_TIMEOUT = 500;\n\ninterface CopyableTextProps<T extends TextVariants> extends TextProps<T> {\n copyable?: boolean;\n copyText?: string;\n}\n\nexport const CopyableText = <T extends TextVariants>({\n children,\n color,\n copyable = true,\n copyText,\n onClick,\n onMouseMove,\n onMouseOut,\n onMouseOver,\n style,\n ...props\n}: CopyableTextProps<T>) => {\n const copyTimeoutRef = useRef<NodeJS.Timeout>();\n const overTimeoutRef = useRef<NodeJS.Timeout>();\n const iconRef = useRef<SVGSVGElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n\n const [copied, setCopied] = useState(false);\n const [over, setOver] = useState(false);\n\n const clickHandler = useCallback(\n (event: MouseEvent<HTMLSpanElement>) => {\n const isText = typeof children === \"string\";\n\n setCopied(true);\n\n copy(copyText ?? isText ? String(children) : \"\");\n\n const reset = () => {\n setCopied(false);\n // setOver(false);\n };\n\n clearTimeout(copyTimeoutRef.current);\n copyTimeoutRef.current = setTimeout(reset, COPY_TIMEOUT);\n\n onClick?.(event);\n },\n [children, copyText, onClick]\n );\n\n const mouseMoveHandler = useCallback(\n (event: MouseEvent<HTMLSpanElement>) => {\n if (!iconRef.current || !containerRef.current) {\n onMouseMove?.(event);\n return;\n }\n\n const rect = containerRef.current.getBoundingClientRect();\n const localX = event.clientX - rect.left + 9;\n const localY = event.clientY - rect.top + 9;\n\n iconRef.current.style.transform = `translate(${localX}px, ${localY}px)`;\n\n onMouseMove?.(event);\n },\n [onMouseMove]\n );\n\n const mouseOutHandler = useCallback(\n (event: MouseEvent<HTMLSpanElement>) => {\n setCopied(false);\n setOver(false);\n\n clearTimeout(overTimeoutRef.current);\n\n onMouseOut?.(event);\n },\n [onMouseOut]\n );\n\n const mouseOverHandler = useCallback(\n (event: MouseEvent<HTMLSpanElement>) => {\n const over = () => {\n setOver(true);\n };\n\n clearTimeout(overTimeoutRef.current);\n overTimeoutRef.current = setTimeout(over, HOVER_TIMEOUT);\n\n onMouseOver?.(event);\n\n return () => {\n clearTimeout(overTimeoutRef.current);\n };\n },\n [onMouseOver]\n );\n\n return (\n <div style={{ position: \"relative\" }}>\n <StyledText\n ref={containerRef}\n children={children}\n onClick={copyable ? clickHandler : onClick}\n onMouseMove={copyable ? mouseMoveHandler : onMouseMove}\n onMouseOut={copyable ? mouseOutHandler : onMouseOut}\n onMouseOver={copyable ? mouseOverHandler : onMouseOver}\n style={\n copyable\n ? copied\n ? {\n ...style,\n opacity: 0.5,\n cursor: \"default\",\n userSelect: \"none\",\n }\n : { ...style, cursor: \"default\", userSelect: \"none\" }\n : { ...style, cursor: \"default\", userSelect: \"none\" }\n }\n {...props}\n />\n {copyable && (\n <Icon\n ref={iconRef}\n iconId=\"CopyFilled\"\n style={{\n position: \"absolute\",\n transition: \"opacity 150ms ease-in-out\",\n top: \"0px\",\n left: \"0px\",\n opacity: over && !copied ? \"1\" : \"0\",\n }}\n />\n )}\n </div>\n );\n};\n\nconst StyledText = styled(Text)`\n position: relative;\n transition: opacity 150ms ease-in-out;\n`;\n","import { useMergeRefs, type ExtendedRefs } from \"@floating-ui/react\";\nimport {\n cloneElement,\n isValidElement,\n type ForwardedRef,\n type HTMLProps,\n type ReactNode,\n} from \"react\";\n\ninterface DecorateFloatingUITriggerArgs {\n children: ReactNode;\n forwardedRef?: ForwardedRef<HTMLElement>;\n setFloatingReference: ExtendedRefs<HTMLElement>[\"setReference\"];\n getReferenceProps: (\n userProps?: HTMLProps<Element>\n ) => Record<string, unknown>;\n open: boolean;\n}\n\nexport const useDecoratedFloatingUITrigger = ({\n children,\n forwardedRef,\n setFloatingReference,\n getReferenceProps,\n open,\n}: DecorateFloatingUITriggerArgs) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const childrenRef = (children as any).ref;\n\n // Merge the reference ref, the passed in ref if it exists, and the childs\n // ref if it exists and pass them down to the child so that it can trigger the modal open\n // handler.\n const ref = useMergeRefs([setFloatingReference, forwardedRef, childrenRef]);\n\n if (!isValidElement(children)) {\n throw new Error(\n \"Passed useDecoratedFloatingUITrigger an invalid child element\"\n );\n } else {\n return cloneElement(\n children,\n getReferenceProps({\n ref,\n ...children.props,\n // Allows the child to style itself depending on the open status without needing to\n // grab it from the context.\n \"data-state\": open ? \"open\" : \"closed\",\n })\n );\n }\n};\n","import {\n useClick,\n useDismiss,\n useFloating,\n useInteractions,\n} from \"@floating-ui/react\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport { DialogOptions } from \"../common/types\";\n\nexport function useDialogContextValue({\n defaultOpen = false,\n open: controlledOpen,\n onOpenChange,\n dismissOptions,\n}: DialogOptions | undefined = {}) {\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n\n const open = controlledOpen ?? uncontrolledOpen;\n const setOpen = useCallback(\n (value: boolean) => {\n if (controlledOpen === undefined) setUncontrolledOpen(value);\n\n onOpenChange?.(value);\n },\n [controlledOpen, onOpenChange]\n );\n\n const data = useFloating({\n open,\n onOpenChange: setOpen,\n });\n\n const context = data.context;\n\n const click = useClick(context);\n\n const dismiss = useDismiss(\n context,\n dismissOptions\n ? { outsidePressEvent: \"mousedown\", ...dismissOptions }\n : { outsidePressEvent: \"mousedown\" }\n );\n\n const interactions = useInteractions([click, dismiss]);\n\n return useMemo(() => {\n return {\n open,\n setOpen,\n ...interactions,\n ...data,\n };\n }, [open, setOpen, interactions, data]);\n}\n","import { SerializedStyles, css } from \"@emotion/react\";\nimport {\n FloatingFocusManager,\n FloatingOverlay,\n FloatingPortal,\n useMergeRefs,\n useTransitionStatus,\n} from \"@floating-ui/react\";\nimport {\n HTMLProps,\n MutableRefObject,\n ReactNode,\n cloneElement,\n createContext,\n forwardRef,\n isValidElement,\n memo,\n useContext,\n} from \"react\";\nimport { useDecoratedFloatingUITrigger } from \"../../common/hooks/use-decorated-floating-ui-trigger\";\nimport { DialogOptions } from \"./common/types\";\nimport { useDialogContextValue } from \"./hooks/use-dialog-context-value\";\n\nconst ModalOverlayStyles = css`\n background: rgba(0, 0, 0, 0.8);\n display: grid;\n place-items: center;\n z-index: 1;\n`;\nconst DialogContext = createContext<ReturnType<\n typeof useDialogContextValue\n> | null>(null);\n\nexport const useDialogContext = () => {\n const context = useContext(DialogContext);\n\n if (context == null) {\n throw new Error(\"Dialog components must be wrapped in <Dialog />\");\n }\n\n return context;\n};\n\ninterface DialogProps extends DialogOptions {\n children: React.ReactNode;\n}\n\n/**\n * Wraps your dialogs trigger and content, providing them access to the dialogs context.\n */\nexport const Dialog = memo(({ children, ...options }: DialogProps) => {\n const dialog = useDialogContextValue(options);\n return (\n <DialogContext.Provider value={dialog}>{children}</DialogContext.Provider>\n );\n});\n\ninterface DialogTriggerProps {\n children: ReactNode;\n}\n\n/**\n * Wraps an element, passing it the props and refs required to have it trigger\n * the opening and closing of the dialog. The child element must accept refs.\n */\nexport const DialogTrigger = forwardRef<HTMLElement, DialogTriggerProps>(\n ({ children }, propRef) => {\n const context = useDialogContext();\n\n return useDecoratedFloatingUITrigger({\n children,\n forwardedRef: propRef,\n setFloatingReference: context.refs.setReference,\n getReferenceProps: context.getReferenceProps,\n open: context.open,\n });\n }\n);\n\nexport interface DialogContentProps extends HTMLProps<HTMLDivElement> {\n disableScrollLock?: boolean;\n portalRoot?: HTMLElement | null | MutableRefObject<HTMLElement | null>;\n portalId?: string;\n trapFocus?: boolean;\n modal?: boolean;\n initialFocus?: number | MutableRefObject<HTMLElement | null>;\n disableFocusManagement?: boolean;\n transitionDuration?: number | Partial<{ open: number; close: number }>;\n OverlayStyles?: SerializedStyles;\n}\n\n/**\n * Wraps an element and renders it as a portaled dialog with the ability to\n * manage and trap its own focus, close on outside clicks, and animate in and out\n * if desired.\n */\nexport const DialogContent = forwardRef<HTMLDivElement, DialogContentProps>(\n (\n {\n disableScrollLock,\n modal,\n portalRoot,\n portalId,\n trapFocus,\n transitionDuration,\n OverlayStyles,\n disableFocusManagement,\n children,\n initialFocus,\n ...props\n },\n propRef\n ) => {\n const { context: floatingContext, ...context } = useDialogContext();\n\n const ref = useMergeRefs([context.refs.setFloating, propRef]);\n\n const { isMounted, status } = useTransitionStatus(floatingContext, {\n duration: transitionDuration || 0,\n });\n\n if (!isValidElement(children)) {\n throw new Error(\"Passed an invalid child element to Dialog.\");\n }\n\n if (!isMounted) return null;\n\n const styles = modal ? ModalOverlayStyles : OverlayStyles;\n\n return (\n <FloatingPortal id={portalId} root={portalRoot}>\n <FloatingFocusManager\n context={floatingContext}\n modal={trapFocus}\n returnFocus={false}\n initialFocus={initialFocus}\n disabled={disableFocusManagement}\n >\n <FloatingOverlay\n css={styles}\n data-status={status}\n lockScroll={!disableScrollLock}\n >\n {cloneElement(children, {\n ...children.props,\n ref,\n \"data-status\": status === \"initial\" ? \"open\" : status,\n ...context.getFloatingProps(props),\n })}\n </FloatingOverlay>\n </FloatingFocusManager>\n </FloatingPortal>\n );\n }\n);\n","// Drawer animation duration in ms\nexport const DRAWER_ANIMATION_DURATION = 300;\n","import styled from \"@emotion/styled\";\nimport { useDrag } from \"@use-gesture/react\";\nimport { useEffect, useRef, useState } from \"react\";\n\nexport function useContainerWidth(): [\n React.RefObject<HTMLDivElement>,\n number | undefined\n] {\n const containerRef = useRef<HTMLDivElement>(null);\n const [width, setWidth] = useState<number | undefined>();\n\n useEffect(() => {\n const observer = new ResizeObserver(([entry]) => {\n if (entry) {\n setWidth(entry.contentRect.width);\n }\n });\n\n if (containerRef.current) {\n observer.observe(containerRef.current);\n }\n\n return () => observer.disconnect();\n }, []);\n\n return [containerRef, width];\n}\n\nconst HandleContainer = styled.div`\n background-color: transparent;\n box-sizing: border-box;\n cursor: ew-resize;\n height: 100%;\n position: relative;\n pointer-events: all;\n touch-action: none;\n z-index: 123;\n\n &::before {\n /* Adjust left and right to increase hit area */\n background-color: transparent;\n bottom: 0;\n content: \"\";\n left: -4px;\n position: absolute;\n right: -4px;\n top: 0;\n }\n`;\n\ninterface FlexHandleProps {\n inverse?: boolean;\n maxSize?: number;\n minSize?: number;\n onChange: (value: number) => void;\n size: number;\n}\n\n/**\n * The FlexHandle can be styled by wrapping it with styled:\n * const MyFlexHandle = styled(FlexHandle)`\n * background-color: #cccccc;\n * `;\n */\nexport const FlexHandle = ({\n inverse = false,\n maxSize,\n minSize = 200,\n onChange,\n size,\n ...props\n}: FlexHandleProps) => {\n const xRef = useRef(0);\n\n const bind = useDrag(({ down, movement: [mx], first }) => {\n if (!down) return;\n\n if (first) xRef.current = size;\n\n let x = xRef.current - mx * (inverse ? -1 : 1);\n if (x < minSize) x = minSize;\n if (maxSize !== undefined && x > maxSize) x = maxSize;\n\n onChange(x);\n });\n\n return <HandleContainer {...props} {...bind()} />;\n};\n","import { createContext, useContext, useMemo, useState } from \"react\";\nimport { DrawerOptions } from \"../common/types\";\n\n/**\n * Memoizes the DrawerContext's value object, and handles instantiating\n * its open status / handler as controlled or uncontrolled.\n */\nexport const useDrawerContextValue = ({\n defaultOpen = false,\n minSize,\n mode,\n onOpenChange: setControlledOpen,\n open: controlledOpen,\n size = 440,\n}: DrawerOptions) => {\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const [sizeValue, setSizeValue] = useState(size);\n\n const open = controlledOpen ?? uncontrolledOpen;\n const setOpen = setControlledOpen ?? setUncontrolledOpen;\n\n return useMemo(() => {\n return {\n mode,\n open,\n setOpen,\n setSize: setSizeValue,\n size: sizeValue,\n minSize,\n };\n }, [minSize, mode, open, setOpen, sizeValue]);\n};\n\nexport const DrawerContext = createContext<ReturnType<\n typeof useDrawerContextValue\n> | null>(null);\n\nexport const useDrawerContext = () => {\n const context = useContext(DrawerContext);\n\n if (context == null) {\n throw new Error(\"Drawer components must be wrapped in <Drawer />\");\n }\n\n return context;\n};\n","import { css, keyframes } from \"@emotion/react\";\nimport styled from \"@emotion/styled\";\nimport { DRAWER_ANIMATION_DURATION } from \"./common/constants\";\nimport { getComponentTokenHelpers } from \"../../../styles\";\nimport { forwardRef, type ReactNode } from \"react\";\nimport { FlexHandle, useContainerWidth } from \"../flex-handle\";\nimport { useDrawerContext } from \"./hooks/use-drawer-context\";\n\nconst [ct] = getComponentTokenHelpers([\"drawer\"]);\n\nexport const DrawerContentFloatContainer = styled.div`\n display: flex;\n height: 100%;\n position: absolute;\n width: 100%;\n z-index: 1;\n pointer-events: none;\n`;\n\nexport const DrawerOverlayBaseStyles = css`\n pointer-events: none;\n display: grid;\n overflow: hidden !important;\n z-index: 1;\n`;\n\nexport const StartOverlayStyle = css`\n place-items: start;\n ${DrawerOverlayBaseStyles};\n`;\n\nexport const EndOverlayStyle = css`\n place-items: end;\n ${DrawerOverlayBaseStyles};\n`;\n\n/**\n * VERTICAL DIALOG DRAWER STYLES\n */\n\nconst VerticalDialogDrawerBaseStyles = styled.div`\n align-items: flex-start;\n animation-timing-function: ease-in-out;\n border-color: ${ct(\"border-color\")};\n border-style: solid;\n border-width: 0px;\n display: flex;\n flex-direction: column;\n flex: 1;\n height: 100%;\n justify-content: flex-start;\n pointer-events: all;\n width: 100%;\n // We add 50ms here to hedge against a race condition between\n // the css animation finishing and the floating-ui transition helper hiding the content.\n animation-duration: ${DRAWER_ANIMATION_DURATION + 10}ms;\n`;\n\nconst DrawerBaseContainer = styled.div`\n display: flex;\n height: 100%;\n width: 100%;\n`;\n\nconst DrawerPane = styled.div`\n flex: 1;\n width: 100%;\n height: 100%;\n`;\n\ninterface InlineDrawerBaseProps {\n children: ReactNode;\n className?: string;\n}\n\nconst LeftDialogDrawerBase = forwardRef<HTMLDivElement, InlineDrawerBaseProps>(\n ({ children, className, ...props }: InlineDrawerBaseProps, ref) => {\n const { minSize, size, setSize } = useDrawerContext();\n const [containerRef, containerWidth] = useContainerWidth();\n\n const mounted = containerWidth !== undefined;\n const percent = size / (containerWidth || 1);\n\n return (\n <DrawerBaseContainer ref={containerRef}>\n {mounted && (\n <>\n <VerticalDialogDrawerBaseStyles\n ref={ref}\n className={className}\n style={{ flexGrow: percent }}\n {...props}\n >\n {children}\n </VerticalDialogDrawerBaseStyles>\n <FlexHandle\n inverse\n size={size}\n minSize={minSize}\n onChange={setSize}\n />\n <DrawerPane style={{ flexGrow: 1 - percent }} />\n </>\n )}\n </DrawerBaseContainer>\n );\n }\n);\n\nconst RightDialogDrawerBase = forwardRef<HTMLDivElement, InlineDrawerBaseProps>(\n ({ children, className, ...props }: InlineDrawerBaseProps, ref) => {\n const { minSize, size, setSize } = useDrawerContext();\n const [containerRef, containerWidth] = useContainerWidth();\n\n const mounted = containerWidth !== undefined;\n const percent = size / (containerWidth || 1);\n\n return (\n <DrawerBaseContainer ref={containerRef}>\n {mounted && (\n <>\n <DrawerPane style={{ flexGrow: 1 - percent }} />\n <FlexHandle size={size} minSize={minSize} onChange={setSize} />\n <VerticalDialogDrawerBaseStyles\n ref={ref}\n className={className}\n style={{ flexGrow: percent }}\n {...props}\n >\n {children}\n </VerticalDialogDrawerBaseStyles>\n </>\n )}\n </DrawerBaseContainer>\n );\n }\n);\n\n// LEFT\n\nconst SlideFromLeft = keyframes({\n \"0%\": { transform: \"translateX(-100%)\" },\n \"100%\": { transform: \"translateX(0%)\" },\n});\n\nconst ReturnFromLeft = keyframes({\n \"0%\": { transform: \"translateX(0%)\" },\n \"100%\": { transform: \"translateX(-100%)\" },\n});\n\nexport const LeftDialogDrawer = styled(LeftDialogDrawerBase)`\n border-right-width: ${ct(\"border-width\")};\n box-shadow: ${ct(\"left-drop-shadow\")};\n &[data-status=\"open\"] {\n animation-name: ${SlideFromLeft};\n }\n &[data-status=\"close\"] {\n animation-name: ${ReturnFromLeft};\n }\n`;\n\n// RIGHT\n\nconst SlideFromRight = keyframes({\n from: { transform: \"translateX(100%)\" },\n to: { transform: \"translateX(0%)\" },\n});\n\nconst ReturnFromRight = keyframes({\n from: { transform: \"translateX(0%)\" },\n to: { transform: \"translateX(100%)\" },\n});\n\nexport const RightDialogDrawer = styled(RightDialogDrawerBase)`\n border-left-width: ${ct(\"border-width\")};\n box-shadow: ${ct(\"right-drop-shadow\")};\n &[data-status=\"open\"] {\n animation-name: ${SlideFromRight};\n }\n &[data-status=\"close\"] {\n animation-name: ${ReturnFromRight};\n }\n`;\n\n/**\n * HORIZONTAL DIALOG DRAWER STYLES\n */\n\nconst HorizontalDialogDrawerBaseStyles = styled.div`\n width: 100%;\n pointer-events: all;\n height: fit-content;\n animation-timing-function: ease-in-out;\n border-width: 0px;\n border-color: ${ct(\"border-color\")};\n border-style: solid;\n // We add 50ms here to hedge against a race condition between\n // the css animation finishing and the floating-ui transition helper hiding the content.\n animation-duration: ${DRAWER_ANIMATION_DURATION + 10}ms;\n`;\n\n// TOP\n\nconst SlideFromTop = keyframes({\n from: { transform: \"translateY(-30px)\", opacity: 0 },\n to: { transform: \"translateY(0)\", opacity: 1 },\n});\n\nconst ReturnFromTop = keyframes({\n from: { transform: \"translateY(0)\", opacity: 1 },\n to: { transform: \"translateY(-30px)\", opacity: 0 },\n});\n\nexport const TopDialogDrawer = styled(HorizontalDialogDrawerBaseStyles)`\n border-bottom-width: ${ct(\"border-width\")};\n &[data-status=\"open\"] {\n animation-name: ${SlideFromTop};\n }\n &[data-status=\"close\"] {\n animation-name: ${ReturnFromTop};\n }\n`;\n\n// BOTTOM\n\nconst SlideFromBottom = keyframes({\n from: { transform: \"translateY(30px)\", opacity: 0 },\n to: { transform: \"translateY(0)\", opacity: 1 },\n});\n\nconst ReturnToBottom = keyframes({\n from: { transform: \"translateY(0)\", opacity: 1 },\n to: { transform: \"translateY(30px)\", opacity: 0 },\n});\n\nexport const BottomDialogDrawer = styled(HorizontalDialogDrawerBaseStyles)`\n border-top-width: ${ct(\"border-width\")};\n &[data-status=\"open\"] {\n animation-name: ${SlideFromBottom};\n }\n &[data-status=\"close\"] {\n animation-name: ${ReturnToBottom};\n }\n`;\n\n/**\n * VERTICAL INLINE DRAWER STYLES\n */\n\nconst VerticalInlineDrawerBaseStyles = styled.div`\n display: flex;\n align-items: flex-start;\n justify-content: flex-start;\n flex-direction: column;\n height: 100%;\n pointer-events: all;\n width: fit-content;\n border-width: 0px;\n border-color: ${ct(\"border-color\")};\n border-style: solid;\n`;\n\nconst LeftInlineDrawerBase = forwardRef<HTMLDivElement, InlineDrawerBaseProps>(\n ({ children, className }: InlineDrawerBaseProps, ref) => {\n const { size, setSize } = useDrawerContext();\n\n return (\n <>\n <FlexHandle inverse size={size} onChange={setSize} />\n <VerticalInlineDrawerBaseStyles\n ref={ref}\n className={className}\n style={{ width: size }}\n >\n {children}\n </VerticalInlineDrawerBaseStyles>\n </>\n );\n }\n);\n\nconst RightInlineDrawerBase = forwardRef<HTMLDivElement, InlineDrawerBaseProps>(\n ({ children, className }: InlineDrawerBaseProps, ref) => {\n const { size, setSize } = useDrawerContext();\n\n return (\n <>\n <FlexHandle size={size} onChange={setSize} />\n <VerticalInlineDrawerBaseStyles\n ref={ref}\n className={className}\n style={{ width: size }}\n >\n {children}\n </VerticalInlineDrawerBaseStyles>\n </>\n );\n }\n);\n\n// LEFT\n\nexport const LeftInlineDrawer = styled(LeftInlineDrawerBase)`\n border-right-width: ${ct(\"border-width\")};\n box-shadow: ${ct(\"left-drop-shadow\")};\n`;\n\n// RIGHT\n\nexport const RightInlineDrawer = styled(RightInlineDrawerBase)`\n border-left-width: ${ct(\"border-width\")};\n box-shadow: ${ct(\"right-drop-shadow\")};\n`;\n\n/**\n * HORIZONTAL INLINE DRAWER STYLES\n */\n\nconst HorizontalInlineDrawerBaseStyles = styled.div`\n width: 100%;\n pointer-events: all;\n height: fit-content;\n border-width: 0px;\n border-color: ${ct(\"border-color\")};\n border-style: solid;\n`;\n\n// TOP\n\nexport const TopInlineDrawer = styled(HorizontalInlineDrawerBaseStyles)`\n border-bottom-width: ${ct(\"border-width\")};\n`;\n\n// BOTTOM\n\nexport const BottomInlineDrawer = styled(HorizontalInlineDrawerBaseStyles)`\n border-top-width: ${ct(\"border-width\")};\n &[data-status=\"open\"] {\n animation-name: ${SlideFromBottom};\n }\n &[data-status=\"close\"] {\n animation-name: ${ReturnToBottom};\n }\n`;\n","import { SerializedStyles } from \"@emotion/react\";\nimport {\n ReactNode,\n cloneElement,\n isValidElement,\n memo,\n useCallback,\n} from \"react\";\nimport { Dialog, DialogContent, DialogTrigger } from \"../dialog\";\nimport type { DialogContentProps } from \"../dialog/dialog\";\nimport { DRAWER_ANIMATION_DURATION } from \"./common/constants\";\nimport { DrawerOptions } from \"./common/types\";\nimport { DrawerContentFloatContainer } from \"./drawer.styles\";\nimport {\n DrawerContext,\n useDrawerContext,\n useDrawerContextValue,\n} from \"./hooks/use-drawer-context\";\n\nconst DISMISS_OPTIONS = {\n escapeKey: true,\n outsidePress: false,\n} as const;\n\nexport interface DrawerProps extends DrawerOptions {\n children: ReactNode;\n}\n\n/**\n * The Drawer component injects the drawer context into its child elements.\n */\nexport const Drawer = memo(({ children, ...options }: DrawerProps) => {\n const value = useDrawerContextValue(options);\n\n if (options.mode === \"dialog\") {\n return (\n <DrawerContext.Provider value={value}>\n <Dialog\n onOpenChange={value.setOpen}\n open={value.open}\n defaultOpen={options.defaultOpen ?? false}\n dismissOptions={DISMISS_OPTIONS}\n >\n {children}\n </Dialog>\n </DrawerContext.Provider>\n );\n }\n\n return (\n <DrawerContext.Provider value={value}>{children}</DrawerContext.Provider>\n );\n});\n\ninterface DrawerTriggerProps {\n children: ReactNode;\n}\n\n/**\n * The DrawerTrigger component handles passing the props necessary to open and close the\n * drawer to its child component. The child component must be wrapped in forwardRef if in dialog mode, and accept\n * an onClick handler in both modes.\n */\nexport const DrawerTrigger = memo(({ children }: DrawerTriggerProps) => {\n const { mode, open, setOpen } = useDrawerContext();\n\n const onClick = useCallback(() => {\n setOpen(!open);\n }, [open, setOpen]);\n\n if (mode === \"dialog\") {\n return <DialogTrigger>{children}</DialogTrigger>;\n }\n\n if (isValidElement(children)) {\n return cloneElement(children, {\n ...children.props,\n onClick,\n // Allows the child to style itself depending on the open status without needing to\n // grab it from the context.\n \"data-state\": open ? \"open\" : \"closed\",\n });\n }\n\n throw new Error(\"Passed DialogTrigger an invalid element\");\n});\n\ninterface DrawerContentProps extends Omit<DialogContentProps, \"ref\"> {\n children: ReactNode;\n OverlayStyles?: SerializedStyles;\n}\n\nexport const DrawerContent = memo(\n ({ children, OverlayStyles, ...props }: DrawerContentProps) => {\n const { mode, open } = useDrawerContext();\n if (mode === \"dialog\") {\n return (\n <DialogContent\n disableScrollLock\n disableFocusManagement\n OverlayStyles={OverlayStyles}\n transitionDuration={DRAWER_ANIMATION_DURATION}\n {...props}\n >\n {children}\n </DialogContent>\n );\n }\n\n if (OverlayStyles) {\n throw new Error(\"OverlayStyles are not used in inline drawers.\");\n }\n\n if (!open) return null;\n\n if (mode === \"inline-float\") {\n return (\n <DrawerContentFloatContainer>{children}</DrawerContentFloatContainer>\n );\n } else {\n return children;\n }\n }\n);\n","import styled from \"@emotion/styled\";\nimport { memo, useCallback, type ReactNode } from \"react\";\nimport { useDrawerContext } from \"../hooks/use-drawer-context\";\n\nimport { getComponentTokenHelpers } from \"../../../../styles\";\nimport { IconIds } from \"../../icon\";\nimport { IconButton } from \"../../icon-button\";\nimport { Text, type TextVariants } from \"../../text\";\n\nconst [ct] = getComponentTokenHelpers([\"drawer\"]);\n\ninterface DrawerHeaderProps {\n children?: ReactNode;\n className?: string;\n closeIcon?: IconIds;\n showCloseButton?: boolean;\n title: string;\n textBold?: boolean;\n textVariant?: TextVariants;\n inheritTextColor?: boolean;\n}\n\nexport const DrawerHeader = memo(\n ({\n children,\n className,\n closeIcon,\n showCloseButton = true,\n title,\n textVariant = \"h2\",\n textBold = false,\n inheritTextColor = false,\n }: DrawerHeaderProps) => {\n const { setOpen } = useDrawerContext();\n\n const onCloseClick = useCallback(() => {\n setOpen(false);\n }, [setOpen]);\n\n return (\n <DrawerHeaderWrapper className={className}>\n <Text\n bold={textBold}\n color={inheritTextColor ? undefined : \"dark\"}\n variant={textVariant}\n >\n {title}\n </Text>\n {children}\n {showCloseButton && (\n <IconButton\n onClick={onCloseClick}\n iconId={closeIcon || \"Close\"}\n size=\"sm\"\n color={inheritTextColor ? undefined : \"blue\"}\n />\n )}\n </DrawerHeaderWrapper>\n );\n }\n);\n\nconst DrawerHeaderWrapper = styled.div`\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n height: ${ct(\"header-height\")};\n background-color: ${ct(\"header-bg\")};\n border-bottom: ${ct(\"header-border-size\")} solid ${ct(\"header-border-color\")};\n padding: 0px ${ct(\"header-x-padding\")};\n`;\n","import styled from \"@emotion/styled\";\nimport { getComponentTokenHelpers } from \"../../../styles\";\n\nconst [getComponentToken] = getComponentTokenHelpers([\"horizontal-rule\"]);\n\nexport const HorizontalRule = styled.div`\n width: 100%;\n border-bottom: ${getComponentToken(\"border-width\")} solid\n ${getComponentToken(\"border-color\")};\n`;\n","import { ClassNames } from \"@emotion/react\";\nimport styled from \"@emotion/styled\";\nimport { getComponentTokenHelpers } from \"../../../styles\";\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useState,\n type InputHTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport { Icon, type IconColors, type IconIds, type IconSizes } from \"../icon\";\nimport { IconButton } from \"../icon-button\";\n\nconst [ct] = getComponentTokenHelpers([\"input\"]);\n\nexport interface InputProps extends InputHTMLAttributes<HTMLInputElement> {\n isSmall?: boolean;\n prefixIconId?: IconIds;\n prefixIconColor?: IconColors;\n prefixSize?: IconSizes;\n autoCapitalize?: HTMLInputElement[\"autocapitalize\"];\n autoComplete?: HTMLInputElement[\"autocomplete\"];\n autoCorrect?: string;\n suffixIconId?: IconIds;\n suffixIconColor?: IconColors;\n suffixSize?: IconSizes;\n suffixIcon?: ReactNode;\n onSuffixIconClick?: (event) => void;\n onEnter?: () => void;\n}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n className,\n type,\n prefixIconId,\n prefixIconColor,\n prefixSize,\n isSmall,\n autoCapitalize = \"off\",\n autoComplete = \"off\",\n autoCorrect = \"off\",\n suffixIconColor,\n suffixIcon,\n suffixIconId,\n suffixSize,\n onSuffixIconClick,\n onEnter,\n onKeyDown,\n ...props\n },\n ref\n ) => {\n const isPassword = type === \"password\";\n\n const [isPasswordVisible, setIsPasswordVisible] = useState(false);\n const [typeClone, setTypeClone] = useState(type);\n\n const onEyeClick = useCallback(() => {\n setTypeClone(isPasswordVisible ? \"password\" : \"text\");\n setIsPasswordVisible(!isPasswordVisible);\n }, [isPasswordVisible]);\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\") {\n onEnter?.();\n }\n onKeyDown?.(e);\n };\n\n useEffect(() => {\n setTypeClone(type);\n }, [type]);\n\n return (\n <ClassNames>\n {({ cx }) => (\n <InputWrapper>\n <StyledInput\n type={typeClone}\n className={cx(className, {\n isSmall,\n hasLeftIcon: !!prefixIconId,\n hasRightIcon: !!isPassword || !!suffixIconId,\n })}\n ref={ref}\n autoCapitalize={isPassword ? \"off\" : autoCapitalize}\n autoComplete={isPassword ? \"current-password\" : autoComplete}\n autoCorrect={isPassword ? \"off\" : autoCorrect}\n onKeyDown={handleKeyDown}\n {...props}\n />\n {prefixIconId && (\n <InputIcon\n iconId={prefixIconId}\n color={prefixIconColor || \"black\"}\n size={prefixSize ? prefixSize : \"sm\"}\n />\n )}\n {(isPassword || !!suffixIconId || !!suffixIcon) && (\n <RightIconWrapper>\n {suffixIcon ? (\n suffixIcon\n ) : suffixIconId ? (\n <Icon\n iconId={suffixIconId}\n color={suffixIconColor ?? \"black\"}\n size={suffixSize ? suffixSize : \"sm\"}\n onClick={onSuffixIconClick}\n />\n ) : (\n <IconButton\n onClick={onEyeClick}\n iconId={isPasswordVisible ? \"Eye\" : \"EyeInvisible\"}\n size=\"sm\"\n color={prefixIconColor ?? \"black\"}\n />\n )}\n </RightIconWrapper>\n )}\n </InputWrapper>\n )}\n </ClassNames>\n );\n }\n);\n\nconst InputWrapper = styled.div`\n width: 100%;\n height: fit-content;\n position: relative;\n display: flex;\n`;\n\nconst StyledInput = styled.input`\n border: ${ct(\"border-width\")} solid ${ct(\"border-color\")};\n border-radius: ${ct(\"border-radius\")};\n height: ${ct(\"height\")};\n line-height: ${ct(\"line-height\")};\n width: 100%;\n background-color: ${ct(\"background-color\")};\n padding: ${ct(\"padding-y\")} ${ct(\"padding-x\")};\n outline: none;\n box-shadow: none;\n font-size: ${ct(\"font-size\")};\n font-weight: ${ct(\"font-weight\")};\n font-family: ${ct(\"font-family\")};\n color: ${ct(\"color\")};\n transition: border 0.2s ease-in-out, background 0.2s ease-in-out;\n :active:not(:disabled):not(:read-only):not([aria-invalid=\"true\"]),\n :focus:not(:disabled):not(:read-only):not([aria-invalid=\"true\"]) {\n border-color: ${ct(\"border-color-active\")};\n }\n &[aria-invalid=\"true\"]:not(:disabled) {\n border-color: ${ct(\"border-color-invalid\")};\n ~ svg {\n fill: ${ct(\"border-color-invalid\")};\n }\n }\n :disabled,\n :read-only {\n cursor: not-allowed;\n color: ${ct(\"color-disabled\")};\n background-color: ${ct(\"background-color-disabled\")};\n ~ svg {\n fill: ${ct(\"color-disabled\")};\n }\n }\n &.isSmall {\n padding: ${ct(\"padding-y-small\")} ${ct(\"padding-x\")};\n }\n &.hasLeftIcon {\n padding-left: ${ct(\"padding-left-icon\")};\n }\n &.hasRightIcon {\n padding-right: ${ct(\"padding-right-icon\")};\n }\n`;\n\nconst InputIcon = styled(Icon)`\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n pointer-events: none;\n z-index: 1;\n left: ${ct(\"icon-left\")};\n`;\n\nconst RightIconWrapper = styled.div`\n position: absolute;\n right: 8px;\n top: 50%;\n transform: translateY(-50%);\n z-index: 1;\n display: grid;\n place-content: center;\n`;\n\nInput.displayName = \"Input\";\n","import { forwardRef, type InputHTMLAttributes } from \"react\";\n\nimport type { IconColors } from \"../icon\";\nimport { Input } from \"../input/input\";\n\ninterface InputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, \"onChange\"> {\n onSearch: (value: string) => void;\n onChange?: (value: string) => void;\n value?: string;\n placeholder?: string;\n prefixIconColor?: IconColors;\n suffixIconColor?: IconColors;\n}\n\nexport const InputSearch = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n onSearch,\n onChange,\n value,\n placeholder,\n prefixIconColor,\n suffixIconColor,\n ...rest\n },\n ref\n ) => (\n <Input\n {...rest}\n ref={ref}\n autoComplete=\"off\"\n prefixIconColor={prefixIconColor ?? \"black\"}\n prefixIconId=\"Search\"\n prefixSize=\"xsm\"\n suffixIconColor={suffixIconColor ?? \"blue\"}\n suffixIconId={value ? \"Close\" : undefined}\n suffixSize=\"xsm\"\n onSuffixIconClick={() => {\n onChange?.(\"\");\n onSearch?.(\"\");\n }}\n placeholder={placeholder ? placeholder : \"Search for...\"}\n onKeyPress={(event) => {\n if (event.key === \"Enter\") {\n event.preventDefault();\n onSearch(event.currentTarget.value);\n }\n }}\n onChange={(event) => {\n onChange?.(event.target.value);\n }}\n value={value}\n />\n )\n);\n","import { css } from \"@emotion/react\";\nimport { getComponentTokenHelpers } from \"../../../styles\";\n\nconst [ct] = getComponentTokenHelpers([\"label\"]);\n\nexport const labelStyles = css`\n align-items: center;\n display: flex;\n gap: ${ct(\"gap\")};\n`;\n","import { Text, TextProps, TextVariants } from \"../text\";\nimport { labelStyles } from \"./label.styles\";\n\nexport type LabelProps = TextProps<TextVariants>;\n\nexport const Label = ({ variant = \"body\", ...props }: LabelProps) => (\n <Text css={labelStyles} variant={variant} {...props} />\n);\n","import { ReactNode } from \"react\";\nimport { Label, LabelProps } from \"./label\";\n\nexport interface LabelWithContentProps extends Omit<LabelProps, \"prefix\"> {\n children: ReactNode;\n prefix?: ReactNode;\n suffix?: ReactNode;\n}\n\nexport const LabelWithContent = ({\n children,\n prefix,\n suffix,\n ...props\n}: LabelWithContentProps) => (\n <Label {...props}>\n {prefix}\n {children}\n {suffix}\n </Label>\n);\n","import { css } from \"@emotion/react\";\nimport { getComponentTokenHelpers } from \"../../../styles\";\nimport { ReactNode } from \"react\";\nimport { labelStyles } from \"./label.styles\";\nimport { LabelWithContent, LabelWithContentProps } from \"./label-with-content\";\n\nconst [ct] = getComponentTokenHelpers([\"label-with-action\"]);\n\nconst labelWithActionStyles = css([labelStyles, { gap: ct(\"gap\") }]);\n\nexport interface LabelWithActionProps extends LabelWithContentProps {\n action: ReactNode;\n}\n\nexport const LabelWithAction = ({\n action,\n variant = \"h2\",\n ...props\n}: LabelWithActionProps) => (\n <LabelWithContent\n css={labelWithActionStyles}\n suffix={action}\n variant={variant}\n {...props}\n />\n);\n","import { css } from \"@emotion/react\";\nimport { getComponentTokenHelpers } from \"../../../styles\";\nimport { LabelWithContent, LabelWithContentProps } from \"./label-with-content\";\n\nconst [ct] = getComponentTokenHelpers([\"label-with-content-link\"]);\n\nconst labelWithContentLinkStyle = css`\n color: ${ct(\"color\")};\n`;\n\nexport const LabelWithContentLink = (props: LabelWithContentProps) => (\n <LabelWithContent css={labelWithContentLinkStyle} {...props} />\n);\n","export const USERNAME_PATTERN = new RegExp(/^[a-zA-Z0-9 _.-]*$/);\n// Taken from: https://emailregex.com/\nexport const EMAIL_PATTERN = new RegExp(\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n);\nexport const NUMBERS_ONLY_PATTERN = new RegExp(/^\\d+$/);\nexport const NO_SPACES_PATTERN = new RegExp(/^\\S*$/);\nexport const FIRST_CHAR_ALPHA = new RegExp(/^[a-zA-Z].*/);\nexport const NO_LEADING_OR_TRAILING_SPACES_PATTERN = new RegExp(\n /^[-a-zA-Z0-9-_'().-]+(\\s+[-a-zA-Z0-9-_'().-]+)*$/\n);\n","// eslint-disable-next-line no-restricted-imports\nimport type { FieldValues, Validate } from \"react-hook-form\";\nimport { EMAIL_PATTERN } from \"./validation-patterns\";\n\nexport type EmailValidation<T extends FieldValues = FieldValues> = Record<\n EmailRequirementKeys,\n Validate<string, T>\n>;\n\nexport enum EmailRequirementKeys {\n email = \"email\",\n}\n\nexport const getEmailValidation = <\n T extends FieldValues = FieldValues\n>(): EmailValidation<T> => {\n return {\n [EmailRequirementKeys.email]: (value) => EMAIL_PATTERN.test(value),\n };\n};\n","// eslint-disable-next-line no-restricted-imports\nimport type { FieldValues, Validate } from \"react-hook-form\";\n\nexport const PASSWORD_MIN_LENGTH = 12;\n\nexport type PasswordValidation<T extends FieldValues = FieldValues> = Record<\n PasswordRequirementKeys,\n Validate<string, T>\n>;\n\nexport enum PasswordRequirementKeys {\n noDigit = \"noDigit\",\n noUpperCase = \"noUpperCase\",\n noSpecialCharacter = \"noSpecialCharacter\",\n tooSimilar = \"tooSimilar\",\n}\n\nexport const getPasswordValidation = <T extends FieldValues = FieldValues>(\n includeTooSimilar?: boolean,\n tooSimilarKey?: string\n): PasswordValidation<T> => {\n return {\n ...(includeTooSimilar\n ? {\n [PasswordRequirementKeys.tooSimilar]: (value, allValues) => {\n const currentPassword =\n allValues[tooSimilarKey ?? \"password_current\"];\n\n if (currentPassword) return value !== currentPassword;\n\n return true;\n },\n }\n : { [PasswordRequirementKeys.tooSimilar]: () => true }),\n [PasswordRequirementKeys.noDigit]: (value) => new RegExp(/\\d/).test(value),\n [PasswordRequirementKeys.noSpecialCharacter]: (value) =>\n new RegExp(/[!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~]+/).test(value),\n [PasswordRequirementKeys.noUpperCase]: (value) =>\n new RegExp(/[A-Z]+/).test(value),\n };\n};\n","type ErrorWithMessage = {\n message: string;\n};\n\nexport const isErrorWithMessage = (error: unknown): error is ErrorWithMessage =>\n typeof error === \"object\" &&\n error !== null &&\n \"message\" in error &&\n typeof (error as Record<string, unknown>).message === \"string\";\n\nexport const getErrorMessage = (error: unknown) => {\n if (isErrorWithMessage(error)) {\n return error.message;\n }\n return undefined;\n};\n","import { useLayoutEffect, useRef } from \"react\";\nimport { noop } from \"../helpers\";\n\n// Inspired by https://www.npmjs.com/package/@react-hook/resize-observer\n\nexport type UseResizeObserverCallback = (\n entry: ResizeObserverEntry,\n observer: ResizeObserver\n) => void;\n\nconst createResizeObserver = () => {\n let isTicking = false;\n let allEntries: ResizeObserverEntry[] = [];\n\n const callBacks: Map<Element, Array<UseResizeObserverCallback>> = new Map();\n\n const observer = new window.ResizeObserver(\n (entries: ResizeObserverEntry[], obs: ResizeObserver) => {\n allEntries = allEntries.concat(entries);\n if (!isTicking) {\n window.requestAnimationFrame(() => {\n const triggered = new Set<Element>();\n\n allEntries.forEach((entry) => {\n if (!triggered.has(entry.target)) {\n triggered.add(entry.target);\n const entryCallbacks = callBacks.get(entry.target);\n if (entryCallbacks) {\n entryCallbacks.forEach((cb) => cb(entry, obs));\n }\n }\n });\n\n allEntries = [];\n isTicking = false;\n });\n }\n isTicking = true;\n }\n );\n\n return {\n observer,\n subscribe(target: Element, callBack: UseResizeObserverCallback) {\n observer.observe(target);\n const cbs = callBacks.get(target) ?? [];\n cbs.push(callBack);\n callBacks.set(target, cbs);\n },\n unsubscribe(target: Element, callback: UseResizeObserverCallback) {\n const cbs = callBacks.get(target) ?? [];\n if (cbs.length === 1) {\n observer.unobserve(target);\n callBacks.delete(target);\n return;\n }\n const cbIndex = cbs.indexOf(callback);\n if (cbIndex !== -1) cbs.splice(cbIndex, 1);\n callBacks.set(target, cbs);\n },\n };\n};\n\nlet _ResizeObserver: ReturnType<typeof createResizeObserver>;\n\nconst getResizeObserver = () =>\n !_ResizeObserver\n ? (_ResizeObserver = createResizeObserver())\n : _ResizeObserver;\n\nexport const useResizeObserver = <T extends Element>(\n target: React.RefObject<T> | React.ForwardedRef<T>,\n callBack: UseResizeObserverCallback\n): ResizeObserver => {\n const resizeObserver = getResizeObserver();\n const callBackRef = useRef(callBack);\n\n useLayoutEffect(() => {\n callBackRef.current = callBack;\n }, [callBack]);\n\n useLayoutEffect(() => {\n let isUnsubscribed = false;\n const targetEl = target && \"current\" in target ? target.current : target;\n\n if (!targetEl) {\n return noop;\n }\n\n const resizeCallback = (\n entry: ResizeObserverEntry,\n observer: ResizeObserver\n ) => {\n if (isUnsubscribed) return;\n callBackRef.current(entry, observer);\n };\n\n resizeObserver.subscribe(targetEl as Element, resizeCallback);\n\n return () => {\n isUnsubscribed = true;\n resizeObserver.unsubscribe(targetEl as Element, resizeCallback);\n };\n }, [target, resizeObserver]);\n\n return resizeObserver.observer;\n};\n","import { useCallback, useEffect, useRef } from \"react\";\nimport { Text, type TextProps, type TextVariants } from \"../text\";\nimport { useResizeObserver } from \"../../../hooks/use-resize-observer\";\nimport styled from \"@emotion/styled\";\n\n// Inspired by: https://github.com/bluepeter/react-middle-ellipsis/tree/master\n\nexport const MiddleTruncateText = <T extends TextVariants>(\n props: TextProps<T>\n) => {\n const ref = useRef<HTMLSpanElement | null>(null);\n const parentRef = useRef<HTMLElement | null>(null);\n\n const middleTruncate = useCallback(() => {\n if (!ref.current) return;\n const parent = parentRef.current;\n const child = ref.current;\n\n if (child !== null && parent !== null) {\n const originalText = child.getAttribute(\"data-original\");\n const currentText = child.textContent;\n if (currentText !== originalText) {\n child.textContent = originalText;\n }\n\n const text = child.textContent;\n const childWidth = child.offsetWidth;\n const parentWidth = parent.offsetWidth;\n\n if (childWidth > parentWidth && !!text) {\n // The number of characters in the text string.\n const numChars = text.length;\n // The average size of each character in the string.\n const avgCharSize = childWidth / numChars;\n // The number of overflowing characters.\n const numHidden = Math.ceil((childWidth - parentWidth) / avgCharSize);\n // The number of characters to remove on each side.\n const charsToRemovePerSide = numHidden / 2 + 1.5;\n // The index of the string we want to stop at on the left.\n const endLeft = Math.floor(numChars / 2 - charsToRemovePerSide);\n // The index of the string we want to start again at on the right.\n const startRight = Math.ceil(numChars / 2 + charsToRemovePerSide);\n // The text on the left of the ellipsis\n const leftText = text.substr(0, endLeft);\n // The text on the right of the ellipsis\n const rightText = text.substr(startRight);\n\n child.textContent = `${leftText.trim()}...${rightText.trim()}`;\n }\n }\n }, []);\n\n const onResize = useCallback(\n (_: ResizeObserverEntry) => {\n middleTruncate();\n },\n [middleTruncate]\n );\n\n useResizeObserver(parentRef, onResize);\n\n useEffect(() => middleTruncate(), [props.children, middleTruncate]);\n\n const setRef = useCallback((node: HTMLSpanElement | null) => {\n ref.current = node;\n parentRef.current = node?.parentElement ?? null;\n }, []);\n\n return <StyledText data-original={props.children} ref={setRef} {...props} />;\n};\n\nconst StyledText = styled(Text)`\n white-space: nowrap;\n word-break: keep-all;\n overflow: visible;\n`;\n","import styled from \"@emotion/styled\";\nimport { getSemanticToken } from \"../../../styles\";\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\n\ninterface SplitterComponentProps {\n initialStartSizePct?: number;\n startClampSizePx?: number;\n minStartSizePct?: number;\n minEndSizePct?: number;\n startContent: React.ReactNode;\n endContent: React.ReactNode;\n orientation?: \"horizontal\" | \"vertical\"; // New prop for orientation\n}\n\nconst SplitterContainer = styled.div<{\n orientation: \"horizontal\" | \"vertical\";\n}>`\n display: grid;\n width: 100%;\n height: 100%;\n position: relative;\n\n ${({ orientation }) =>\n orientation === \"horizontal\"\n ? \"grid-template-columns: auto 2px auto;\"\n : \"grid-template-rows: auto 2px auto;\"}\n`;\n\nconst Pane = styled.div`\n overflow: auto;\n`;\n\nconst StartPane = styled(Pane)``;\n\nconst EndPane = styled(Pane)``;\n\nconst Splitter = styled.div<{ orientation: \"horizontal\" | \"vertical\" }>`\n ${({ orientation }) =>\n orientation === \"horizontal\"\n ? \"width: 1px; cursor: col-resize;\"\n : \"height: 1px; cursor: row-resize;\"}\n\n background-color: ${getSemanticToken(\"color-grey20\")};\n position: relative;\n user-select: none;\n\n &::before {\n content: \"\";\n position: absolute;\n background-color: transparent;\n ${({ orientation }) =>\n orientation === \"horizontal\"\n ? \"top: 0; bottom: 0; left: -4px; right: -4px;\"\n : \"left: 0; right: 0; top: -4px; bottom: -4px;\"}\n cursor: inherit;\n }\n`;\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction throttle(func: Function, limit: number) {\n let lastFunc: ReturnType<typeof setTimeout>;\n let lastRan: number;\n\n return function (this, ...args: any[]) {\n // eslint-disable-next-line @typescript-eslint/no-invalid-this, @typescript-eslint/no-this-alias\n const context = this as any;\n if (!lastRan) {\n func.apply(context, args);\n lastRan = Date.now();\n } else {\n clearTimeout(lastFunc);\n lastFunc = setTimeout(function () {\n if (Date.now() - lastRan >= limit) {\n func.apply(context, args);\n lastRan = Date.now();\n }\n }, limit - (Date.now() - lastRan));\n }\n };\n}\n\nexport const PaneSplitter: React.FC<SplitterComponentProps> = ({\n initialStartSizePct = 50,\n startClampSizePx = 210,\n minStartSizePct = 10,\n minEndSizePct = 10,\n startContent,\n endContent,\n orientation = \"horizontal\", // Default to horizontal orientation\n}) => {\n const containerRef = useRef<HTMLDivElement | null>(null);\n const [splitterPosition, setSplitterPosition] = useState<number | null>(null);\n\n useEffect(() => {\n if (containerRef.current && splitterPosition === null) {\n const containerRect = containerRef.current.getBoundingClientRect();\n const containerSize =\n orientation === \"horizontal\"\n ? containerRect.width\n : containerRect.height;\n const initialPositionInPixels =\n (initialStartSizePct / 100) * containerSize;\n const splitterPosition = Math.max(\n startClampSizePx,\n initialPositionInPixels\n );\n\n const splitterPct = (splitterPosition / containerSize) * 100;\n setSplitterPosition(splitterPosition);\n const startPaneSize = splitterPct;\n const endPaneSize = 100 - splitterPct;\n\n if (orientation === \"horizontal\") {\n containerRef.current.style.gridTemplateColumns = `${startPaneSize}% 2px ${endPaneSize}%`;\n } else {\n containerRef.current.style.gridTemplateRows = `${startPaneSize}% 2px ${endPaneSize}%`;\n }\n }\n }, [initialStartSizePct, startClampSizePx, splitterPosition, orientation]);\n\n const handleResize = useCallback(() => {\n if (!containerRef.current || splitterPosition === null) return;\n\n const containerRect = containerRef.current.getBoundingClientRect();\n const containerSize =\n orientation === \"horizontal\" ? containerRect.width : containerRect.height;\n let startPaneSize = Math.round((splitterPosition / containerSize) * 100);\n let endPaneSize = 100 - startPaneSize;\n\n if (endPaneSize < minEndSizePct) {\n endPaneSize = minEndSizePct;\n startPaneSize = 100 - endPaneSize;\n const newSplitterPosition = Math.round(\n (startPaneSize / 100) * containerSize\n );\n setSplitterPosition(newSplitterPosition);\n }\n\n if (startPaneSize < minStartSizePct) {\n startPaneSize = minStartSizePct;\n endPaneSize = 100 - startPaneSize;\n const newSplitterPosition = Math.round(\n (startPaneSize / 100) * containerSize\n );\n setSplitterPosition(newSplitterPosition);\n }\n\n if (orientation === \"horizontal\") {\n containerRef.current.style.gridTemplateColumns = `${splitterPosition}px 2px auto`;\n } else {\n containerRef.current.style.gridTemplateRows = `${splitterPosition}px 2px auto`;\n }\n }, [splitterPosition, minStartSizePct, minEndSizePct, orientation]);\n\n // Throttle the handleResize function\n const throttledHandleResize = useCallback(throttle(handleResize, 50), [\n handleResize,\n ]);\n\n useEffect(() => {\n window.addEventListener(\"resize\", throttledHandleResize);\n return () => window.removeEventListener(\"resize\", throttledHandleResize);\n }, [throttledHandleResize]);\n\n const handleMouseDown = (e: React.MouseEvent) => {\n e.preventDefault();\n document.addEventListener(\"mousemove\", handleMouseMove);\n document.addEventListener(\"mouseup\", handleMouseUp);\n };\n\n const handleMouseMove = (e: MouseEvent) => {\n if (!containerRef.current) return;\n\n const containerRect = containerRef.current.getBoundingClientRect();\n const containerSize =\n orientation === \"horizontal\" ? containerRect.width : containerRect.height;\n const newSplitterPosition =\n orientation === \"horizontal\"\n ? e.clientX - containerRect.left\n : e.clientY - containerRect.top;\n\n const rawStartSize = Math.max(startClampSizePx, newSplitterPosition);\n const startPaneSize = Math.round((rawStartSize / containerSize) * 100);\n const endPaneSize = 100 - startPaneSize;\n\n if (startPaneSize >= minStartSizePct && endPaneSize >= minEndSizePct) {\n setSplitterPosition(newSplitterPosition);\n if (orientation === \"horizontal\") {\n containerRef.current.style.gridTemplateColumns = `${startPaneSize}% 2px ${endPaneSize}%`;\n } else {\n containerRef.current.style.gridTemplateRows = `${startPaneSize}% 2px ${endPaneSize}%`;\n }\n }\n };\n\n const handleMouseUp = () => {\n document.removeEventListener(\"mousemove\", handleMouseMove);\n document.removeEventListener(\"mouseup\", handleMouseUp);\n };\n\n return (\n <SplitterContainer ref={containerRef} orientation={orientation}>\n <StartPane>{startContent}</StartPane>\n <Splitter onMouseDown={handleMouseDown} orientation={orientation} />\n <EndPane>{endContent}</EndPane>\n </SplitterContainer>\n );\n};\n","export function assert(\n expectedCondition: unknown,\n message: string\n): asserts expectedCondition {\n if (!expectedCondition) {\n console.error(message);\n\n throw Error(message);\n }\n}\n","export const getResizeHandleElement = (\n id: string,\n scope: ParentNode | HTMLElement = document\n): HTMLElement | null => {\n const element = scope.querySelector(\n `[data-resizable-panel-group-handle-id=\"${id}\"]`\n );\n if (element) {\n return element as HTMLElement;\n }\n return null;\n};\n","export function getPanelGroupElement(\n id: string,\n rootElement: ParentNode | HTMLElement = document\n): HTMLElement | null {\n //If the root element is the PanelGroup\n if (\n rootElement instanceof HTMLElement &&\n (rootElement as HTMLElement)?.dataset?.resizablePanelGroupId === id\n ) {\n return rootElement as HTMLElement;\n }\n\n //Else query children\n const element = rootElement.querySelector(\n `[data-resizable-panel-group][data-resizable-panel-group-id=\"${id}\"]`\n );\n if (element) {\n return element as HTMLElement;\n }\n return null;\n}\n","import type { ResizeEvent } from \"../types\";\n\nexport const isMouseEvent = (event: ResizeEvent): event is MouseEvent =>\n event.type.startsWith(\"mouse\");\n\nexport const isPointerEvent = (event: ResizeEvent): event is PointerEvent =>\n event.type.startsWith(\"pointer\");\n\nexport const getResizeEventCoordinates = (event: ResizeEvent) => {\n if (isPointerEvent(event)) {\n if (event.isPrimary) {\n return {\n x: event.clientX,\n y: event.clientY,\n };\n }\n } else if (isMouseEvent(event)) {\n return {\n x: event.clientX,\n y: event.clientY,\n };\n }\n\n return {\n x: Infinity,\n y: Infinity,\n };\n};\n","import { getResizeEventCoordinates } from \"../../../helpers/get-resize-event-coords\";\nimport type { Direction, ResizeEvent } from \"../../../types\";\n\nexport const getResizeEventCursorPosition = (\n direction: Direction,\n event: ResizeEvent\n): number => {\n const isHorizontal = direction === \"horizontal\";\n\n const { x, y } = getResizeEventCoordinates(event);\n\n return isHorizontal ? x : y;\n};\n","import { assert } from \"../../../../../../../utils/assert\";\nimport type { Direction, DragState, ResizeEvent } from \"../../../types\";\nimport { getPanelGroupElement } from \"./get-panel-group-element\";\nimport { getResizeEventCursorPosition } from \"./get-resize-event-cursor-position\";\nimport { getResizeHandleElement } from \"./get-resize-handle-element\";\n\nexport const calculateDragOffset = (\n event: ResizeEvent,\n dragHandleId: string,\n direction: Direction,\n initialDragState: DragState,\n panelGroupElement: HTMLElement\n): number => {\n const handleElement = getResizeHandleElement(dragHandleId, panelGroupElement);\n\n assert(\n handleElement,\n `No resize handle element found for id \"${dragHandleId}\"`\n );\n\n const groupId = handleElement.getAttribute(\"data-resizable-panel-group-id\");\n assert(groupId, `Resize handle element has no group id attribute`);\n\n const { initialCursorPosition } = initialDragState;\n\n const cursorPosition = getResizeEventCursorPosition(direction, event);\n\n const groupElement = getPanelGroupElement(groupId, panelGroupElement);\n assert(groupElement, `No group element found for id \"${groupId}\"`);\n\n const offsetPixels = cursorPosition - initialCursorPosition;\n\n return offsetPixels;\n};\n\n// https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/movementX\nexport const calculateDeltaPercentage = (\n event: ResizeEvent,\n dragHandleId: string,\n direction: Direction,\n initialDragState: DragState | null,\n panelGroupElement: HTMLElement\n): number => {\n if (initialDragState == null) {\n return 0;\n }\n\n return calculateDragOffset(\n event,\n dragHandleId,\n direction,\n initialDragState,\n panelGroupElement\n );\n};\n","export const getResizePanelElement = (\n id: string,\n groupId: string,\n scope: ParentNode | HTMLElement = document\n): HTMLDivElement | null => {\n const elements = Array.from(\n scope.querySelectorAll(\n `[data-resizable-panel-group-element][data-resizable-panel-group-id=\"${groupId}\"]`\n )\n );\n\n const handleIndex = elements.findIndex((element) => {\n if (\n (element as HTMLDivElement).dataset &&\n (element as HTMLDivElement).dataset.resizablePanelGroupHandleId === id\n ) {\n return true;\n }\n return false;\n });\n\n if (handleIndex) {\n const indexToResize = handleIndex - 1;\n\n const handleOwner = elements[indexToResize];\n\n if (\n handleOwner &&\n (handleOwner as HTMLDivElement).dataset.resizablePanelGroupPanel !==\n undefined\n ) {\n return handleOwner as HTMLDivElement;\n }\n }\n return null;\n};\n","export const getResizePanels = (\n groupId: string,\n scope: ParentNode | HTMLElement = document\n) => {\n const elements = Array.from(\n scope.querySelectorAll(\n `[data-resizable-panel-group-element][data-resizable-panel-group-id=\"${groupId}\"]`\n )\n );\n\n return elements.filter(\n (element) =>\n (element as HTMLDivElement).dataset &&\n (element as HTMLDivElement).dataset.resizablePanelGroupPanel !== undefined\n ) as HTMLDivElement[];\n};\n","/* eslint-disable complexity */\n/* eslint-disable max-depth */\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type MutableRefObject,\n type ReactNode,\n} from \"react\";\nimport type {\n Direction,\n DragState,\n ResizeEvent,\n ResizeHandler,\n} from \"../../types\";\nimport { assert } from \"../../../../../../utils/assert\";\nimport { getResizeHandleElement } from \"./helpers/get-resize-handle-element\";\nimport { calculateDeltaPercentage } from \"./helpers/calculate-delta-percentage\";\nimport { getResizeEventCursorPosition } from \"./helpers/get-resize-event-cursor-position\";\nimport { getResizePanelElement } from \"./helpers/get-resize-panel-element\";\nimport { getResizePanels } from \"./helpers/get-resize-panels\";\n\nconst getSizeFromProp = (\n element: HTMLDivElement,\n key: string,\n parentSize?: number\n) => {\n const prop = element.dataset[key];\n\n let size: number | undefined;\n\n if (prop) {\n if (prop.includes(\"px\")) {\n size = Number(prop.replace(\"px\", \"\"));\n } else if (prop.includes(\"%\")) {\n if (parentSize) {\n const percentSize = Number(prop.replace(\"%\", \"\"));\n\n size = parentSize * (percentSize / 100);\n }\n } else {\n size = Number(prop);\n }\n }\n\n return size;\n};\n\nconst setElementValues = (\n element: HTMLDivElement,\n direction: Direction,\n size: number,\n collapsed: boolean,\n minSize?: number,\n maxSize?: number\n) => {\n if (direction === \"vertical\") {\n element.style.height = `${size}px`;\n if (minSize) {\n element.style.minHeight = `${minSize}px`;\n }\n if (maxSize) {\n element.style.maxHeight = `${maxSize}px`;\n }\n } else {\n element.style.width = `${size}px`;\n if (minSize) {\n element.style.minWidth = `${minSize}px`;\n }\n if (maxSize) {\n element.style.maxWidth = `${maxSize}px`;\n }\n }\n element.setAttribute(\"data-collapsed\", `${collapsed}`);\n};\n\nconst resizePanel = (\n panel: HTMLDivElement,\n direction: Direction,\n newSize?: number,\n isShrinking?: boolean\n) => {\n const currentSize =\n direction === \"horizontal\"\n ? panel.getBoundingClientRect().width\n : panel.getBoundingClientRect().height;\n\n const parentElement = panel.parentElement;\n\n const parentSize =\n direction === \"horizontal\"\n ? parentElement?.getBoundingClientRect().width\n : parentElement?.getBoundingClientRect().height;\n\n const minSize = getSizeFromProp(panel, \"resizablePanelMinSize\", parentSize);\n const maxSize = getSizeFromProp(panel, \"resizablePanelMaxSize\", parentSize);\n const collapsedSize = getSizeFromProp(\n panel,\n \"resizablePanelCollapsedSize\",\n parentSize\n );\n\n let size = newSize ?? currentSize;\n\n const collapseDelta = minSize ? minSize * 0.33 : 50;\n\n // At minimum size\n if (minSize && currentSize === minSize) {\n // If the size is collapseDelta pixels away from the minimum size, and we have a collapsed size set,\n // collapse the panel.\n if (\n isShrinking &&\n size < minSize &&\n !!collapsedSize &&\n minSize - size > collapseDelta\n ) {\n size = collapsedSize;\n } else if (size < minSize) {\n size = minSize;\n }\n\n // At max size\n } else if (maxSize && currentSize === maxSize) {\n if (size > maxSize) {\n size = maxSize;\n }\n // At collapsed size\n } else if (collapsedSize && currentSize === collapsedSize) {\n if (\n !isShrinking &&\n size > collapsedSize &&\n minSize &&\n size - collapsedSize > collapseDelta\n ) {\n size = minSize;\n } else {\n size = collapsedSize;\n }\n }\n const collapsed = size === collapsedSize;\n\n if (size === currentSize || !parentSize) return;\n\n setElementValues(\n panel,\n direction,\n size,\n collapsed,\n collapsed ? collapsedSize : minSize,\n maxSize\n );\n};\n\ninterface ResizablePanelGroupContextValues {\n id: string;\n startDragging: (dragHandleId: string, event: ResizeEvent) => void;\n stopDragging: () => void;\n togglePanelCollapse: (panelId: string) => void;\n direction: Direction;\n registerResizeHandle: (dragHandleId: string) => ResizeHandler;\n}\n\nconst ResizablePanelGroupContext =\n createContext<ResizablePanelGroupContextValues | null>(null);\n\ninterface ResizablePanelGroupContextProviderProps {\n children: (\n ref: MutableRefObject<HTMLDivElement | null>,\n id: string\n ) => ReactNode;\n direction: Direction;\n}\n\nexport const ResizablePanelGroupContextProvider = ({\n children,\n direction,\n}: ResizablePanelGroupContextProviderProps) => {\n const id = useId();\n const ref = useRef<HTMLDivElement | null>(null);\n const [dragState, setDragState] = useState<DragState | null>(null);\n\n const committedValuesRef = useRef<{\n direction: Direction;\n dragState: DragState | null;\n id: string;\n initialResizePanelSize: number | null;\n }>({\n dragState,\n id,\n initialResizePanelSize: null,\n direction,\n });\n\n useLayoutEffect(() => {\n committedValuesRef.current.direction = direction;\n committedValuesRef.current.dragState = dragState;\n committedValuesRef.current.id = id;\n });\n\n const startDragging = useCallback(\n (dragHandleId: string, event: ResizeEvent) => {\n const { direction } = committedValuesRef.current;\n\n if (!ref.current) {\n return;\n }\n\n const handleElement = getResizeHandleElement(dragHandleId, ref.current);\n\n assert(\n handleElement,\n `Drag handle element not found for id \"${dragHandleId}\"`\n );\n\n const initialCursorPosition = getResizeEventCursorPosition(\n direction,\n event\n );\n\n setDragState({\n dragHandleId,\n dragHandleRect: handleElement.getBoundingClientRect(),\n initialCursorPosition,\n });\n\n const panelToResize = getResizePanelElement(\n dragHandleId,\n committedValuesRef.current.id,\n ref.current\n );\n\n if (panelToResize) {\n const rect = panelToResize.getBoundingClientRect();\n\n committedValuesRef.current.initialResizePanelSize =\n direction === \"vertical\" ? rect.height : rect.width;\n }\n },\n []\n );\n\n const stopDragging = useCallback(() => {\n setDragState(null);\n committedValuesRef.current.initialResizePanelSize = null;\n }, []);\n\n const togglePanelCollapse = useCallback((panelId: string) => {\n const { direction } = committedValuesRef.current;\n\n const panels = getResizePanels(\n committedValuesRef.current.id,\n ref.current ?? undefined\n );\n\n const panel = panels.find(\n (panel) => panel.dataset.resizablePanelId === panelId\n );\n\n if (panel) {\n const parentElement = panel.parentElement;\n\n const parentSize =\n direction === \"horizontal\"\n ? parentElement?.getBoundingClientRect().width\n : parentElement?.getBoundingClientRect().height;\n\n const isCollapsed = panel.dataset.collapsed === \"true\";\n\n const minSize = getSizeFromProp(\n panel,\n \"resizablePanelMinSize\",\n parentSize\n );\n\n const collapsedSize = getSizeFromProp(\n panel,\n \"resizablePanelCollapsedSize\",\n parentSize\n );\n\n resizePanel(\n panel,\n direction,\n isCollapsed ? minSize : collapsedSize,\n !isCollapsed\n );\n }\n }, []);\n\n useEffect(() => {\n const recalculatePanelSizes = () => {\n const panels = getResizePanels(\n committedValuesRef.current.id,\n ref.current ?? undefined\n );\n panels.forEach((panel) => {\n resizePanel(panel, committedValuesRef.current.direction);\n });\n };\n\n window.addEventListener(\"resize\", recalculatePanelSizes);\n\n return () => {\n window.removeEventListener(\"resize\", recalculatePanelSizes);\n };\n }, []);\n\n const registerResizeHandle = useCallback(\n (dragHandleId: string) => (event: ResizeEvent) => {\n event.preventDefault();\n\n const panelGroupElement = ref.current;\n\n if (!panelGroupElement) {\n return () => null;\n }\n\n const { direction, dragState } = committedValuesRef.current;\n\n const delta = calculateDeltaPercentage(\n event,\n dragHandleId,\n direction,\n dragState,\n panelGroupElement\n );\n\n if (delta !== 0 && ref.current) {\n const panelToResize = getResizePanelElement(\n dragHandleId,\n committedValuesRef.current.id,\n ref.current\n );\n\n if (\n panelToResize &&\n committedValuesRef.current.initialResizePanelSize !== null\n ) {\n const initialSize = committedValuesRef.current.initialResizePanelSize;\n\n let newSize = initialSize + delta;\n\n newSize = newSize < 0 ? 0 : newSize;\n\n resizePanel(panelToResize, direction, newSize, initialSize > newSize);\n }\n }\n\n return undefined;\n },\n []\n );\n\n const value = useMemo<ResizablePanelGroupContextValues>(() => {\n return {\n id,\n startDragging,\n stopDragging,\n direction,\n registerResizeHandle,\n togglePanelCollapse,\n };\n }, [\n id,\n startDragging,\n stopDragging,\n direction,\n registerResizeHandle,\n togglePanelCollapse,\n ]);\n\n return (\n <ResizablePanelGroupContext.Provider value={value}>\n {children(ref, id)}\n </ResizablePanelGroupContext.Provider>\n );\n};\n\nexport const useResizablePanelGroupContext = () => {\n const context = useContext(ResizablePanelGroupContext);\n\n if (!context) {\n throw new Error(\n \"Unable to use ResizablePanelGroupContext outside of a ResizablePanelGroupContextProvider\"\n );\n }\n\n return context;\n};\n","import styled from \"@emotion/styled\";\nimport { type ReactNode } from \"react\";\nimport { ResizablePanelGroupContextProvider } from \"./common/hooks/use-resizable-panel-group-context/use-resizable-panel-group-context\";\nimport type { Direction } from \"./common/types\";\nimport cx from \"classnames\";\n\ninterface ResizablePanelGroupProps {\n children: ReactNode;\n direction: Direction;\n className?: string;\n}\n\nexport const ResizablePanelGroup = ({\n children,\n direction,\n className,\n}: ResizablePanelGroupProps) => (\n <ResizablePanelGroupContextProvider direction={direction}>\n {(ref, id) => (\n <StyledResizablePanelGroup\n data-resizable-panel-group=\"\"\n data-resizable-panel-group-id={id}\n className={cx(className, { isVertical: direction === \"vertical\" })}\n ref={ref}\n >\n {children}\n </StyledResizablePanelGroup>\n )}\n </ResizablePanelGroupContextProvider>\n);\n\nconst StyledResizablePanelGroup = styled.div`\n width: 100%;\n height: 100%;\n overflow: auto;\n display: flex;\n align-items: flex-start;\n justify-content: flex-start;\n &.isVertical {\n flex-direction: column;\n }\n`;\n","import styled from \"@emotion/styled\";\nimport { type ReactNode } from \"react\";\nimport { useResizablePanelGroupContext } from \"../common/hooks/use-resizable-panel-group-context\";\n\nexport interface ResizablePanelProps {\n children: ReactNode;\n maxSize?: number | string;\n minSize?: number | string;\n collapsedSize?: number | string;\n defaultSize?: number | string;\n className?: string;\n panelId?: string;\n}\n\nexport const ResizablePanel = ({\n children,\n maxSize,\n minSize,\n defaultSize,\n collapsedSize,\n className,\n panelId,\n}: ResizablePanelProps) => {\n const { id, direction } = useResizablePanelGroupContext();\n\n const _maxSize =\n typeof maxSize === \"string\"\n ? maxSize\n : maxSize\n ? `${maxSize}px`\n : undefined;\n\n const _minSize =\n typeof minSize === \"string\"\n ? minSize\n : minSize\n ? `${minSize}px`\n : undefined;\n\n const _defaultSize =\n typeof defaultSize === \"string\"\n ? defaultSize\n : defaultSize\n ? `${defaultSize}px`\n : undefined;\n\n return (\n <StyledResizablePanel\n className={className}\n style={\n direction === \"horizontal\"\n ? {\n maxWidth: _maxSize,\n minWidth: _minSize,\n width: _defaultSize ?? \"auto\",\n height: \"100%\",\n }\n : {\n maxHeight: _maxSize,\n minHeight: _minSize,\n height: _defaultSize ?? \"auto\",\n width: \"100%\",\n }\n }\n data-resizable-panel-group-element=\"\"\n data-resizable-panel-group-panel=\"\"\n data-resizable-panel-max-size={maxSize}\n data-resizable-panel-min-size={minSize}\n data-resizable-panel-collapsed-size={collapsedSize}\n data-resizable-panel-id={panelId}\n data-resizable-panel-group-id={id}\n data-collapsed={false}\n >\n {children}\n </StyledResizablePanel>\n );\n};\n\nconst StyledResizablePanel = styled.div`\n flex-shrink: 0;\n overflow: clip;\n`;\n\nexport const FlexResizablePanel = styled(ResizablePanel)`\n flex: 1;\n`;\n","type CursorState = \"horizontal\" | \"intersection\" | \"vertical\";\n\nlet currentCursorStyle: string | null = null;\nlet enabled = true;\nlet styleElement: HTMLStyleElement | null = null;\n\nexport function disableGlobalCursorStyles() {\n enabled = false;\n}\n\nexport function enableGlobalCursorStyles() {\n enabled = true;\n}\n\nexport function getCursorStyle(state: CursorState): string {\n switch (state) {\n case \"horizontal\":\n return \"ew-resize\";\n case \"intersection\":\n return \"move\";\n case \"vertical\":\n return \"ns-resize\";\n default:\n return \"auto\";\n }\n}\n\nexport function resetGlobalCursorStyle() {\n if (styleElement !== null) {\n document.head.removeChild(styleElement);\n\n currentCursorStyle = null;\n styleElement = null;\n }\n}\n\nexport function setGlobalCursorStyle(state: CursorState) {\n if (!enabled) {\n return;\n }\n\n const style = getCursorStyle(state);\n\n if (currentCursorStyle === style) {\n return;\n }\n\n currentCursorStyle = style;\n\n if (styleElement === null) {\n styleElement = document.createElement(\"style\");\n\n document.head.appendChild(styleElement);\n }\n\n styleElement.innerHTML = `*{cursor: ${style}!important;}`;\n}\n","export interface Rectangle {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\nexport const intersects = (\n rectOne: Rectangle,\n rectTwo: Rectangle,\n strict: boolean\n): boolean => {\n if (strict) {\n return (\n rectOne.x < rectTwo.x + rectTwo.width &&\n rectOne.x + rectOne.width > rectTwo.x &&\n rectOne.y < rectTwo.y + rectTwo.height &&\n rectOne.y + rectOne.height > rectTwo.y\n );\n } else {\n return (\n rectOne.x <= rectTwo.x + rectTwo.width &&\n rectOne.x + rectOne.width >= rectTwo.x &&\n rectOne.y <= rectTwo.y + rectTwo.height &&\n rectOne.y + rectOne.height >= rectTwo.y\n );\n }\n};\n","// Forked from NPM stacking-order@2.0.0\n// Background at https://github.com/Rich-Harris/stacking-order/issues/3\n// Background at https://github.com/Rich-Harris/stacking-order/issues/6\n\nimport { assert } from \"../../../../../../utils/assert\";\n\n/**\n * Determine which of two nodes appears in front of the other —\n * if `a` is in front, returns 1, otherwise returns -1\n * @param {HTMLElement} a\n * @param {HTMLElement} b\n */\nexport function compare(a: HTMLElement, b: HTMLElement): number {\n if (a === b) throw new Error(\"Cannot compare node with itself\");\n\n const ancestors = {\n a: get_ancestors(a),\n b: get_ancestors(b),\n };\n\n let common_ancestor;\n\n // remove shared ancestors\n while (ancestors.a.at(-1) === ancestors.b.at(-1)) {\n a = ancestors.a.pop() as HTMLElement;\n b = ancestors.b.pop() as HTMLElement;\n\n common_ancestor = a;\n }\n\n assert(\n common_ancestor,\n \"Stacking order can only be calculated for elements with a common ancestor\"\n );\n\n const z_indexes = {\n a: get_z_index(find_stacking_context(ancestors.a)),\n b: get_z_index(find_stacking_context(ancestors.b)),\n };\n\n if (z_indexes.a === z_indexes.b) {\n const children = common_ancestor.childNodes;\n\n const furthest_ancestors = {\n a: ancestors.a.at(-1),\n b: ancestors.b.at(-1),\n };\n\n let i = children.length;\n while (i--) {\n const child = children[i];\n if (child === furthest_ancestors.a) return 1;\n if (child === furthest_ancestors.b) return -1;\n }\n }\n\n return Math.sign(z_indexes.a - z_indexes.b);\n}\n\nconst props =\n /\\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\\b/;\n\n/** @param {HTMLElement} node */\nfunction is_flex_item(node: HTMLElement | ParentNode) {\n // @ts-expect-error Not an error.\n const display = getComputedStyle(get_parent(node) ?? node).display;\n return display === \"flex\" || display === \"inline-flex\";\n}\n\n/** @param {HTMLElement} node */\nfunction creates_stacking_context(node: HTMLElement | ParentNode) {\n const style = getComputedStyle(node as HTMLElement);\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context\n if (style.position === \"fixed\") return true;\n // Forked to fix upstream bug https://github.com/Rich-Harris/stacking-order/issues/3\n // if (\n // (style.zIndex !== \"auto\" && style.position !== \"static\") ||\n // is_flex_item(node)\n // )\n if (\n style.zIndex !== \"auto\" &&\n (style.position !== \"static\" || is_flex_item(node))\n )\n return true;\n if (+style.opacity < 1) return true;\n if (\"transform\" in style && style.transform !== \"none\") return true;\n if (\"webkitTransform\" in style && style.webkitTransform !== \"none\")\n return true;\n if (\"mixBlendMode\" in style && style.mixBlendMode !== \"normal\") return true;\n if (\"filter\" in style && style.filter !== \"none\") return true;\n if (\"webkitFilter\" in style && style.webkitFilter !== \"none\") return true;\n if (\"isolation\" in style && style.isolation === \"isolate\") return true;\n if (props.test(style.willChange)) return true;\n // @ts-expect-error Not an error.\n if (style.webkitOverflowScrolling === \"touch\") return true;\n\n return false;\n}\n\n/** @param {HTMLElement[]} nodes */\nfunction find_stacking_context(nodes: (HTMLElement | ParentNode)[]) {\n let i = nodes.length;\n\n while (i--) {\n const node = nodes[i];\n assert(node, \"Missing node\");\n if (creates_stacking_context(node)) return node;\n }\n\n return null;\n}\n\n/** @param {HTMLElement} node */\nfunction get_z_index(node: HTMLElement | ParentNode | null) {\n return (node && Number(getComputedStyle(node as HTMLElement).zIndex)) || 0;\n}\n\nfunction get_ancestors(node: HTMLElement | ParentNode | null) {\n const ancestors: (HTMLElement | ParentNode)[] = [];\n\n while (node) {\n ancestors.push(node);\n\n node = get_parent(node);\n }\n\n return ancestors; // [ node, ... <body>, <html>, document ]\n}\n\n/** @param {HTMLElement} node */\nfunction get_parent(node: HTMLElement | ParentNode) {\n const { parentNode } = node;\n if (parentNode && parentNode instanceof ShadowRoot) {\n return parentNode.host;\n }\n return parentNode;\n}\n","import { getResizeEventCoordinates } from \"../../common/helpers/get-resize-event-coords\";\nimport type { Direction, ResizeEvent } from \"../../common/types\";\nimport type { ResizeHandlerAction } from \"../common/types\";\nimport { resetGlobalCursorStyle, setGlobalCursorStyle } from \"./helpers/cursor\";\nimport { intersects } from \"./helpers/intersects\";\nimport { compare } from \"./helpers/stacking-order\";\n\nlet isPointerDown = false;\n\nexport type SetResizeHandlerState = (\n action: ResizeHandlerAction,\n isActive: boolean,\n event: ResizeEvent | null\n) => void;\n\nexport type PointerHitAreaMargins = {\n coarse: number;\n fine: number;\n};\n\nexport type ResizeHandlerData = {\n element: HTMLElement;\n direction: Direction;\n hitAreaMargins: PointerHitAreaMargins;\n setResizeHandlerState: SetResizeHandlerState;\n};\n\nconst getInputType = (): \"coarse\" | \"fine\" | undefined => {\n if (typeof matchMedia === \"function\") {\n return matchMedia(\"(pointer:coarse)\").matches ? \"coarse\" : \"fine\";\n }\n return undefined;\n};\n\nconst intersectingHandles: ResizeHandlerData[] = [];\nconst registeredResizeHandlers = new Set<ResizeHandlerData>();\nconst isCoarsePointer = getInputType() === \"coarse\";\nconst ownerDocumentCounts: Map<Document, number> = new Map();\n\nexport const registerResizeHandle = (\n element: HTMLElement,\n direction: Direction,\n hitAreaMargins: PointerHitAreaMargins,\n setResizeHandlerState: SetResizeHandlerState\n) => {\n const { ownerDocument } = element;\n\n const data: ResizeHandlerData = {\n direction,\n element,\n hitAreaMargins,\n setResizeHandlerState,\n };\n\n const count = ownerDocumentCounts.get(ownerDocument) ?? 0;\n ownerDocumentCounts.set(ownerDocument, count + 1);\n\n registeredResizeHandlers.add(data);\n\n updateListeners();\n\n return function unregisterResizeHandle() {\n registeredResizeHandlers.delete(data);\n\n const count = ownerDocumentCounts.get(ownerDocument) ?? 1;\n ownerDocumentCounts.set(ownerDocument, count - 1);\n\n updateListeners();\n\n if (count === 1) {\n ownerDocumentCounts.delete(ownerDocument);\n }\n\n // If the resize handle that is currently unmounting is intersecting with the pointer,\n // update the global pointer to account for the change\n if (intersectingHandles.includes(data)) {\n const index = intersectingHandles.indexOf(data);\n if (index >= 0) {\n intersectingHandles.splice(index, 1);\n }\n\n updateCursor();\n\n // Also instruct the handle to stop dragging; this prevents the parent group from being left in an inconsistent state\n // See github.com/bvaughn/react-resizable-panels/issues/402\n setResizeHandlerState(\"up\", true, null);\n }\n };\n};\n\nconst recalculateIntersectingHandles = ({\n target,\n x,\n y,\n}: {\n target: EventTarget | null;\n x: number;\n y: number;\n}) => {\n intersectingHandles.splice(0);\n\n let targetElement: HTMLElement | null = null;\n if (target instanceof HTMLElement) {\n targetElement = target;\n }\n\n registeredResizeHandlers.forEach((data) => {\n const { element: dragHandleElement, hitAreaMargins } = data;\n\n const dragHandleRect = dragHandleElement.getBoundingClientRect();\n const { bottom, left, right, top } = dragHandleRect;\n\n const margin = isCoarsePointer\n ? hitAreaMargins.coarse\n : hitAreaMargins.fine;\n\n const eventIntersects =\n x >= left - margin &&\n x <= right + margin &&\n y >= top - margin &&\n y <= bottom + margin;\n\n if (eventIntersects) {\n // TRICKY\n // We listen for pointers events at the root in order to support hit area margins\n // (determining when the pointer is close enough to an element to be considered a \"hit\")\n // Clicking on an element \"above\" a handle (e.g. a modal) should prevent a hit though\n // so at this point we need to compare stacking order of a potentially intersecting drag handle,\n // and the element that was actually clicked/touched\n if (\n targetElement !== null &&\n document.contains(targetElement) &&\n dragHandleElement !== targetElement &&\n !dragHandleElement.contains(targetElement) &&\n !targetElement.contains(dragHandleElement) &&\n // Calculating stacking order has a cost, so we should avoid it if possible\n // That is why we only check potentially intersecting handles,\n // and why we skip if the event target is within the handle's DOM\n compare(targetElement, dragHandleElement) > 0\n ) {\n // If the target is above the drag handle, then we also need to confirm they overlap\n // If they are beside each other (e.g. a panel and its drag handle) then the handle is still interactive\n //\n // It's not enough to compare only the target\n // The target might be a small element inside of a larger container\n // (For example, a SPAN or a DIV inside of a larger modal dialog)\n let currentElement: HTMLElement | null = targetElement;\n let didIntersect = false;\n while (currentElement) {\n if (currentElement.contains(dragHandleElement)) {\n break;\n } else if (\n intersects(\n currentElement.getBoundingClientRect(),\n dragHandleRect,\n true\n )\n ) {\n didIntersect = true;\n break;\n }\n\n currentElement = currentElement.parentElement;\n }\n\n if (didIntersect) {\n return;\n }\n }\n\n intersectingHandles.push(data);\n }\n });\n};\n\nconst handlePointerDown = (event: PointerEvent) => {\n const { target } = event;\n const { x, y } = getResizeEventCoordinates(event);\n\n isPointerDown = true;\n\n recalculateIntersectingHandles({ target, x, y });\n\n updateListeners();\n\n if (intersectingHandles.length > 0) {\n updateResizeHandlerStates(\"down\", event);\n\n event.preventDefault();\n event.stopPropagation();\n }\n};\n\nconst handlePointerMove = (event: PointerEvent) => {\n const { x, y } = getResizeEventCoordinates(event);\n\n // Edge case (see #340)\n // Detect when the pointer has been released outside an iframe on a different domain\n if (isPointerDown && event.buttons === 0) {\n isPointerDown = false;\n\n updateResizeHandlerStates(\"up\", event);\n }\n\n if (!isPointerDown) {\n const { target } = event;\n\n // Recalculate intersecting handles whenever the pointer moves, except if it has already been pressed\n // at that point, the handles may not move with the pointer (depending on constraints)\n // but the same set of active handles should be locked until the pointer is released\n recalculateIntersectingHandles({ target, x, y });\n }\n\n updateResizeHandlerStates(\"move\", event);\n\n // Update cursor based on return value(s) from active handles\n updateCursor();\n\n if (intersectingHandles.length > 0) {\n event.preventDefault();\n }\n};\n\nconst handlePointerUp = (event: ResizeEvent) => {\n const { target } = event;\n const { x, y } = getResizeEventCoordinates(event);\n\n isPointerDown = false;\n\n if (intersectingHandles.length > 0) {\n event.preventDefault();\n }\n\n updateResizeHandlerStates(\"up\", event);\n recalculateIntersectingHandles({ target, x, y });\n updateCursor();\n\n updateListeners();\n};\n\nconst updateListeners = () => {\n ownerDocumentCounts.forEach((_, ownerDocument) => {\n const { body } = ownerDocument;\n\n body.removeEventListener(\"contextmenu\", handlePointerUp);\n body.removeEventListener(\"pointerdown\", handlePointerDown);\n body.removeEventListener(\"pointerleave\", handlePointerMove);\n body.removeEventListener(\"pointermove\", handlePointerMove);\n });\n\n window.removeEventListener(\"pointerup\", handlePointerUp);\n window.removeEventListener(\"pointercancel\", handlePointerUp);\n\n if (registeredResizeHandlers.size > 0) {\n if (isPointerDown) {\n if (intersectingHandles.length > 0) {\n ownerDocumentCounts.forEach((count, ownerDocument) => {\n const { body } = ownerDocument;\n\n if (count > 0) {\n body.addEventListener(\"contextmenu\", handlePointerUp);\n body.addEventListener(\"pointerleave\", handlePointerMove);\n body.addEventListener(\"pointermove\", handlePointerMove);\n }\n });\n }\n\n window.addEventListener(\"pointerup\", handlePointerUp);\n window.addEventListener(\"pointercancel\", handlePointerUp);\n } else {\n ownerDocumentCounts.forEach((count, ownerDocument) => {\n const { body } = ownerDocument;\n\n if (count > 0) {\n body.addEventListener(\"pointerdown\", handlePointerDown, {\n capture: true,\n });\n body.addEventListener(\"pointermove\", handlePointerMove);\n }\n });\n }\n }\n};\n\nconst updateResizeHandlerStates = (\n action: ResizeHandlerAction,\n event: ResizeEvent\n) => {\n registeredResizeHandlers.forEach((data) => {\n const { setResizeHandlerState } = data;\n\n const isActive = intersectingHandles.includes(data);\n\n setResizeHandlerState(action, isActive, event);\n });\n};\n\nconst updateCursor = () => {\n let intersectsHorizontal = false;\n let intersectsVertical = false;\n\n intersectingHandles.forEach((data) => {\n const { direction } = data;\n\n if (direction === \"horizontal\") {\n intersectsHorizontal = true;\n } else {\n intersectsVertical = true;\n }\n });\n\n if (intersectsHorizontal && intersectsVertical) {\n setGlobalCursorStyle(\"intersection\");\n } else if (intersectsHorizontal) {\n setGlobalCursorStyle(\"horizontal\");\n } else if (intersectsVertical) {\n setGlobalCursorStyle(\"vertical\");\n } else {\n resetGlobalCursorStyle();\n }\n};\n","import styled from \"@emotion/styled\";\nimport {\n memo,\n useEffect,\n useId,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\nimport { useResizablePanelGroupContext } from \"../common/hooks/use-resizable-panel-group-context/use-resizable-panel-group-context\";\nimport type { ResizeEvent, ResizeHandler } from \"../common/types\";\nimport { assert } from \"../../../../utils/assert\";\nimport type { ResizeHandlerAction } from \"./common/types\";\nimport { registerResizeHandle } from \"./register-handle\";\nimport cx from \"classnames\";\nimport { getComponentTokenHelpers } from \"../../../../styles\";\n\nconst [ct] = getComponentTokenHelpers([\"resizable-panels\"]);\n\nexport type PanelResizeHandleOnDragging = (isDragging: boolean) => void;\nexport type ResizeHandlerState = \"drag\" | \"hover\" | \"inactive\";\n\ninterface ResizablePanelHandleProps {\n className?: string;\n disabled?: boolean;\n}\n\nexport const ResizablePanelHandle = memo(\n ({ className, disabled }: ResizablePanelHandleProps) => {\n const {\n id,\n startDragging,\n stopDragging,\n direction,\n registerResizeHandle: registerResizeHandleInContext,\n } = useResizablePanelGroupContext();\n\n const resizeHandleId = useId();\n\n const [state, setState] = useState<ResizeHandlerState>(\"inactive\");\n const [resizeHandler, setResizeHandler] = useState<ResizeHandler | null>(\n null\n );\n const elementRef = useRef<HTMLDivElement | null>(null);\n\n const committedValuesRef = useRef<{\n state: ResizeHandlerState;\n }>({\n state,\n });\n\n useLayoutEffect(() => {\n committedValuesRef.current.state = state;\n });\n\n useEffect(() => {\n if (disabled) {\n setResizeHandler(null);\n } else {\n const resizeHandler = registerResizeHandleInContext(resizeHandleId);\n setResizeHandler(() => resizeHandler);\n }\n }, [disabled, resizeHandleId, registerResizeHandleInContext]);\n\n useEffect(() => {\n if (disabled || resizeHandler == null) {\n return undefined;\n }\n\n const element = elementRef.current;\n\n assert(element, \"Element ref not attached\");\n\n const setResizeHandlerState = (\n action: ResizeHandlerAction,\n isActive: boolean,\n event: ResizeEvent | null\n ) => {\n if (isActive) {\n switch (action) {\n case \"down\": {\n setState(\"drag\");\n\n assert(event, 'Expected event to be defined for \"down\" action');\n\n startDragging(resizeHandleId, event);\n\n break;\n }\n case \"move\": {\n const { state } = committedValuesRef.current;\n\n if (state !== \"drag\") {\n setState(\"hover\");\n }\n\n assert(event, 'Expected event to be defined for \"move\" action');\n\n resizeHandler(event);\n break;\n }\n case \"up\": {\n setState(\"hover\");\n\n stopDragging();\n\n break;\n }\n }\n } else {\n setState(\"inactive\");\n }\n };\n\n return registerResizeHandle(\n element,\n direction,\n {\n coarse: 15,\n fine: 5,\n },\n setResizeHandlerState\n );\n }, [\n direction,\n disabled,\n resizeHandleId,\n resizeHandler,\n startDragging,\n stopDragging,\n ]);\n\n return (\n <StyledResizablePanelHandle\n data-resizable-panel-group-element=\"\"\n data-resizable-panel-group-id={id}\n data-resizable-panel-group-handle-id={resizeHandleId}\n className={cx(className, {\n isVertical: direction === \"vertical\",\n isHovered: state === \"hover\",\n isDragging: state === \"drag\",\n })}\n ref={elementRef}\n />\n );\n }\n);\n\nconst StyledResizablePanelHandle = styled.div`\n height: 100%;\n width: 1px;\n flex-shrink: 0;\n background-color: ${ct(\"border-color\")};\n transition: background 0.125s ease-in-out;\n &.isHovered {\n background-color: ${ct(\"border-color-hover\")};\n }\n &.isDragging {\n background-color: ${ct(\"border-color-drag\")};\n }\n &.isVertical {\n width: 100%;\n height: 1px;\n }\n`;\n","import styled from \"@emotion/styled\";\nimport { FloatingOverlay, FloatingPortal } from \"@floating-ui/react\";\nimport { type ReactNode } from \"react\";\n\nexport interface ScreenOverlayProps {\n children: ReactNode;\n open: boolean;\n disableScrollLock?: boolean;\n className?: string;\n status?: \"unmounted\" | \"initial\" | \"open\" | \"close\";\n}\n\nexport const ScreenOverlay = ({\n children,\n open,\n disableScrollLock,\n className,\n status,\n}: ScreenOverlayProps) => {\n if (!open) return null;\n\n return (\n <FloatingPortal>\n <StyledFloatingOverlay\n className={className}\n lockScroll={!disableScrollLock}\n data-status={status}\n >\n {children}\n </StyledFloatingOverlay>\n </FloatingPortal>\n );\n};\n\nconst StyledFloatingOverlay = styled(FloatingOverlay)`\n background: rgba(0, 0, 0, 0.8);\n display: grid;\n place-items: center;\n z-index: 1;\n`;\n","import { flip, size } from \"@floating-ui/react\";\n\nexport const SELECT_MIDDLEWARE = [flip()];\n\nexport const SAME_SIZE_SELECT_MIDDLEWARE = [\n flip(),\n size({\n apply({ rects, elements }) {\n Object.assign(elements.floating.style, {\n width: `${rects.reference.width}px`,\n });\n },\n }),\n];\n","import styled from \"@emotion/styled\";\nimport {\n FloatingFocusManager,\n FloatingList,\n FloatingPortal,\n autoUpdate,\n useClick,\n useDismiss,\n useFloating,\n useInteractions,\n useListNavigation,\n useRole,\n type Placement,\n} from \"@floating-ui/react\";\nimport { getComponentTokenHelpers, getSemanticToken } from \"../../../styles\";\nimport {\n ReactNode,\n createContext,\n useCallback,\n useContext,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { Icon } from \"../icon\";\nimport { IconButton } from \"../icon-button\";\nimport {\n SAME_SIZE_SELECT_MIDDLEWARE,\n SELECT_MIDDLEWARE,\n} from \"../common/constants\";\n\nconst [selectCt] = getComponentTokenHelpers([\"select\"]);\n\ninterface SelectContextValue {\n activeIndex: number | null;\n selectedIndex: number | null;\n open: boolean;\n getItemProps: ReturnType<typeof useInteractions>[\"getItemProps\"];\n handleSelect: (index: number | null) => void;\n setIsOpen: (isOpen: boolean) => void;\n}\n\nexport const SelectContext = createContext<SelectContextValue | null>(null);\n\nexport const useSelectContext = () => {\n const context = useContext(SelectContext);\n\n if (context === null) {\n throw new Error(\"Select context used outside of the SelectContextProvider\");\n }\n\n return context;\n};\n\nexport interface SelectProps {\n onSelect: (actionId: string) => void;\n onBeforeOpen?: () => Promise<void>;\n Reference?: ReactNode;\n children: ReactNode;\n disabled?: boolean;\n // Typeahead will allow you to use the arrow keys to navigate the list.\n // If this is true that functionality will be disabled.\n matchReferenceWidth?: boolean;\n selectedIndex?: number | null;\n onSelectedIndexChange?: (index: number | null) => void;\n className?: string;\n // When the select menu opens, focus is switch to the options list.\n // If this prop is true that functionality will be disabled.\n isFocusTrapDisabled?: boolean;\n menuPlacement?: Placement;\n onOpenChange?: (open: boolean) => void;\n showOpenState?: boolean;\n}\n\nconst DEFAULT_BEFORE_OPEN = () => Promise.resolve();\nexport const Select = ({\n children,\n onSelect,\n Reference,\n disabled,\n selectedIndex: controlledSelectedIndex,\n onSelectedIndexChange,\n className,\n matchReferenceWidth,\n isFocusTrapDisabled,\n menuPlacement,\n onOpenChange,\n onBeforeOpen = DEFAULT_BEFORE_OPEN,\n showOpenState = false,\n}: SelectProps) => {\n const [isOpen, setIsOpen] = useState(false);\n const [activeIndex, setActiveIndex] = useState<number | null>(null);\n const [uncontrolledSelectedIndex, setUncontrolledSelectedIndex] = useState<\n number | null\n >(null);\n\n const selectedIndex = controlledSelectedIndex ?? uncontrolledSelectedIndex;\n const setSelectedIndex =\n onSelectedIndexChange ?? setUncontrolledSelectedIndex;\n\n const _onOpenChange = useCallback(\n (open: boolean) => {\n if (open) {\n onBeforeOpen().then(() => {\n setIsOpen(open);\n if (onOpenChange) {\n onOpenChange(open);\n }\n });\n } else {\n setIsOpen(open);\n if (onOpenChange) {\n onOpenChange(open);\n }\n }\n },\n [onBeforeOpen, onOpenChange]\n );\n\n const { refs, floatingStyles, context } = useFloating({\n placement: menuPlacement ? menuPlacement : \"bottom-end\",\n open: isOpen,\n onOpenChange: _onOpenChange,\n whileElementsMounted: autoUpdate,\n middleware: matchReferenceWidth\n ? SAME_SIZE_SELECT_MIDDLEWARE\n : SELECT_MIDDLEWARE,\n });\n\n const elementsRef = useRef<Array<HTMLElement | null>>([]);\n const labelsRef = useRef<Array<string | null>>([]);\n\n const handleSelect = useCallback(\n (index: number | null) => {\n setSelectedIndex(index);\n if (index !== null) {\n onSelect(elementsRef.current[index]?.dataset.key || \"\");\n }\n\n setIsOpen(false);\n if (onOpenChange) {\n onOpenChange(false);\n }\n },\n [onOpenChange, onSelect, setSelectedIndex]\n );\n\n const listNav = useListNavigation(context, {\n listRef: elementsRef,\n activeIndex,\n selectedIndex,\n focusItemOnHover: !isFocusTrapDisabled,\n focusItemOnOpen: !isFocusTrapDisabled,\n onNavigate: setActiveIndex,\n });\n\n const click = useClick(context, { enabled: !disabled });\n const dismiss = useDismiss(context);\n const role = useRole(context, { role: \"listbox\" });\n\n const { getReferenceProps, getFloatingProps, getItemProps } = useInteractions(\n [listNav, click, dismiss, role]\n );\n\n const selectContext = useMemo(() => {\n return {\n activeIndex,\n selectedIndex,\n open: isOpen,\n getItemProps,\n handleSelect,\n setIsOpen,\n };\n }, [activeIndex, isOpen, selectedIndex, getItemProps, handleSelect]);\n\n return (\n <SelectContext.Provider value={selectContext}>\n <StyledReference\n ref={refs.setReference}\n tabIndex={0}\n {...getReferenceProps({\n onClick(event) {\n event.stopPropagation();\n },\n })}\n >\n {showOpenState ? (\n <SelectState>\n {Reference ?? (\n <IconButton\n className=\"select-reference\"\n size=\"sm\"\n iconId=\"Ellipsis\"\n color=\"blue\"\n />\n )}\n <Icon size=\"xsm\" iconId={!isOpen ? \"CaretDown\" : \"CaretUp\"} />\n </SelectState>\n ) : (\n Reference ?? (\n <IconButton\n className=\"select-reference\"\n size=\"sm\"\n iconId=\"Ellipsis\"\n color=\"blue\"\n />\n )\n )}\n </StyledReference>\n {isOpen && (\n <FloatingPortal>\n <FloatingFocusManager\n disabled={isFocusTrapDisabled}\n context={context}\n modal={false}\n >\n <StyledListBox\n ref={refs.setFloating}\n style={floatingStyles}\n className={className}\n {...getFloatingProps()}\n >\n <FloatingList elementsRef={elementsRef} labelsRef={labelsRef}>\n {children}\n </FloatingList>\n </StyledListBox>\n </FloatingFocusManager>\n </FloatingPortal>\n )}\n </SelectContext.Provider>\n );\n};\n\nconst StyledReference = styled.div`\n align-items: center;\n display: flex;\n font-size: ${selectCt(\"font-size\")};\n cursor: default;\n user-select: none;\n`;\n\nconst StyledListBox = styled.div`\n display: flex;\n flex-direction: column;\n border: ${selectCt(\"border-size\")} solid ${selectCt(\"border-color\")};\n box-shadow: 0px 0px 4px 0px rgba(0, 0, 0, 0.25);\n outline: 0;\n z-index: 2;\n`;\n\nconst SelectState = styled.div`\n display: flex;\n align-items: center;\n justify-content: flex-start;\n gap: 2px;\n`;\n","import { ClassNames } from \"@emotion/react\";\nimport styled from \"@emotion/styled\";\nimport { useListItem } from \"@floating-ui/react\";\nimport { getComponentTokenHelpers } from \"../../../../styles\";\nimport { memo, useCallback, type MouseEvent, type ReactNode } from \"react\";\nimport { IconIds, type IconColors } from \"../../icon\";\nimport Icon from \"../../icon/icon\";\nimport { useSelectContext } from \"../select\";\nimport type { TextColors } from \"../../text\";\nimport { TEXT_COLORS } from \"../../text/text\";\n\nconst [optionCt, textCt] = getComponentTokenHelpers([\"option\", \"text\"]);\n\nexport interface OptionProps {\n label: string | ReactNode;\n optionKey: string;\n disabled?: boolean;\n textColor?: TextColors;\n prefixIconId?: IconIds;\n prefixIconColor?: IconColors;\n suffixIconId?: IconIds;\n suffixIconColor?: IconColors;\n className?: string;\n disableSelectionStyle?: boolean;\n disableEnterSelection?: boolean;\n}\n\nexport const Option = memo(\n ({\n label,\n optionKey,\n disabled,\n className,\n prefixIconId,\n prefixIconColor,\n suffixIconId,\n textColor,\n suffixIconColor,\n disableSelectionStyle,\n disableEnterSelection,\n }: OptionProps) => {\n const { activeIndex, selectedIndex, getItemProps, handleSelect } =\n useSelectContext();\n\n const { ref, index } = useListItem({ label: optionKey });\n\n const isActive =\n activeIndex !== null && activeIndex !== -1 && activeIndex === index;\n const isSelected =\n !disableSelectionStyle &&\n selectedIndex !== null &&\n selectedIndex !== -1 &&\n selectedIndex === index;\n\n const handleOptionSelect = useCallback(\n (event: MouseEvent) => {\n if (!disabled) {\n event.stopPropagation();\n handleSelect(index);\n }\n },\n [disabled, handleSelect, index]\n );\n\n return (\n <ClassNames>\n {({ cx }) => (\n <OptionContainer\n className={cx({ isActive, isSelected, disabled }, className)}\n ref={ref}\n data-key={optionKey}\n role=\"option\"\n data-color={textColor}\n aria-selected={isActive && isSelected}\n tabIndex={isActive ? 0 : -1}\n {...getItemProps({\n onClick: (event) => handleOptionSelect(event),\n onKeyDown:\n !disableEnterSelection && !disabled\n ? (event) => {\n if (event.code === \"Enter\") {\n handleSelect(index);\n }\n }\n : undefined,\n })}\n >\n {!!prefixIconId && (\n <Icon\n iconId={prefixIconId}\n size=\"sm\"\n color={disabled ? \"grey\" : prefixIconColor ?? \"black\"}\n />\n )}\n {label}\n {!!suffixIconId && (\n <SuffixIcon\n iconId={suffixIconId}\n size=\"sm\"\n color={disabled ? \"grey\" : suffixIconColor ?? \"black\"}\n />\n )}\n </OptionContainer>\n )}\n </ClassNames>\n );\n }\n);\n\nconst OptionContainer = styled.div`\n color: ${optionCt(\"color\")};\n cursor: pointer;\n font-size: inherit;\n background-color: ${optionCt(\"bg-color\")};\n font-family: ${optionCt(\"font-family\")};\n font-size: ${optionCt(\"font-size\")};\n padding: ${optionCt(\"padding\")};\n min-width: 96px;\n line-height: 18px;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n text-align: left;\n overflow: hidden;\n outline: 0;\n column-gap: ${optionCt(\"column-gap\")};\n ${TEXT_COLORS.map(\n (color) => `&[data-color=\"${color}\"] {\n color: ${textCt(`color-${color}`)};\n }`\n ).join(\"\\n\")}\n ${`${textCt(\"body-size\", true)}: ${optionCt(\"font-size\")}`};\n &.isActive {\n background: ${optionCt(\"bg-color-active\")};\n }\n &.isSelected {\n font-weight: ${optionCt(\"font-weight-selected\")};\n }\n &.disabled {\n color: ${optionCt(\"color-disabled\")};\n cursor: not-allowed;\n }\n`;\n\nconst SuffixIcon = styled(Icon)`\n transform: translate(-2px, -1px);\n`;\n","import { memo, useMemo } from \"react\";\nimport { Icon, IconIds, type IconSizes } from \"../icon\";\nimport { Option } from \"./components/option\";\nimport { Select } from \"./select\";\nimport { Text } from \"../text\";\nimport styled from \"@emotion/styled\";\n\nexport type Level = \"normal\" | \"info\" | \"warn\" | \"error\";\nexport interface ActionItem {\n label: string;\n iconId: IconIds;\n key: string;\n level?: Level;\n disabled?: boolean;\n iconSize?: IconSizes;\n}\ninterface ActionSelectProps {\n actionItems: ActionItem[];\n disabled?: boolean;\n onSelect: (actionId: string) => void;\n}\n\nexport const ActionSelect: React.FunctionComponent<ActionSelectProps> = ({\n actionItems,\n disabled,\n onSelect,\n}) => {\n const items = useMemo(\n () =>\n actionItems.map((item) => (\n <Option\n key={item.key}\n disabled={disabled || item.disabled}\n label={\n <ActionOption\n key={item.key}\n label={item.label}\n iconId={item.iconId}\n iconSize={item.iconSize}\n disabled={item.disabled}\n level={item.level}\n />\n }\n optionKey={item.key}\n />\n )),\n [actionItems, disabled]\n );\n\n return (\n <Select disabled={disabled} onSelect={onSelect}>\n {items}\n </Select>\n );\n};\n\ninterface OptionItemProps {\n label: string;\n iconId: IconIds;\n iconSize?: IconSizes;\n level?: Level;\n disabled?: boolean;\n}\n\nconst getColor = (level?: Level) => {\n switch (\n level // Notice the correct placement of the opening brace '{'\n ) {\n case \"normal\":\n return undefined;\n case \"info\":\n return \"blue\";\n case \"error\":\n return \"red\";\n case \"warn\":\n return \"yellow\";\n default:\n return undefined;\n }\n};\n\nconst ActionOption = memo(\n ({ label, iconId, level, disabled, iconSize }: OptionItemProps) => (\n <OptionItemContainer>\n <Icon\n iconId={iconId}\n size={iconSize ? iconSize : \"sm\"}\n color={disabled ? \"grey\" : getColor(level) ? getColor(level) : \"black\"}\n />\n <Text\n variant=\"body\"\n color={disabled ? \"grey\" : getColor(level) ? getColor(level) : \"dark\"}\n >\n {label}\n </Text>\n </OptionItemContainer>\n )\n);\n\nconst OptionItemContainer = styled.div`\n display: flex;\n gap: 8px;\n align-items: center;\n`;\n","import styled from \"@emotion/styled\";\nimport { IconButton } from \"../icon-button\";\nimport { getComponentTokenHelpers } from \"../../../styles\";\n\nconst [ct] = getComponentTokenHelpers([\"shell-icon-button\"]);\n\nconst ShellIconButtonStyles = styled(IconButton)`\n padding: ${ct(\"padding\")};\n\n --studio-c-icon-button-badge-top: 6px;\n --studio-c-icon-button-badge-right: 6px;\n`;\n\nexport const ShellIconButton = (props) => (\n <ShellIconButtonStyles badgeBorderColor=\"black\" {...props} />\n);\n","import { createContext, useContext } from \"react\";\n\nexport interface TabContextValue {\n activeTab: string | undefined;\n onTabChange: (value: string) => void;\n}\n\nexport const TabContext = createContext<TabContextValue | null>(null);\n\nexport const useTabContext = () => {\n const context = useContext(TabContext);\n\n if (context === null) {\n throw new Error(\"Unable to use TabContext outside of a TabProvider\");\n }\n\n return context;\n};\n","import { ReactNode, memo, useMemo, useState } from \"react\";\nimport { TabOptions } from \"./common/types\";\nimport { TabContext, TabContextValue } from \"./common/hooks/use-tab-context\";\n\ninterface TabProps extends TabOptions {\n children: ReactNode;\n}\n\nexport const Tab = memo(\n ({\n children,\n activeTab: controlledTab,\n onTabChange: controlledTabChange,\n defaultActiveTab,\n }: TabProps) => {\n const [uncontrolledTab, setUncontrolledTab] = useState<string | undefined>(\n defaultActiveTab\n );\n\n const onTabChange = controlledTabChange ?? setUncontrolledTab;\n const activeTab = controlledTab ?? uncontrolledTab;\n\n const value = useMemo<TabContextValue>(() => {\n return {\n onTabChange,\n activeTab,\n };\n }, [activeTab, onTabChange]);\n\n return <TabContext.Provider value={value}>{children}</TabContext.Provider>;\n }\n);\n","import { memo, useCallback } from \"react\";\nimport { useTabContext } from \"../common/hooks/use-tab-context\";\nimport styled from \"@emotion/styled\";\nimport { getComponentTokenHelpers } from \"../../../../styles\";\nimport { Text } from \"../../text\";\nimport { Icon, type IconColors, type IconIds } from \"../../icon\";\n\nconst [ct] = getComponentTokenHelpers([\"tab\"]);\n\ninterface TabTriggerProps {\n value: string;\n text: string;\n iconId?: IconIds;\n iconColor?: IconColors;\n disabled?: boolean;\n}\n\nexport const TabTrigger = memo(\n ({ value, text, disabled, iconColor, iconId }: TabTriggerProps) => {\n const { activeTab, onTabChange } = useTabContext();\n\n const isActive = value === activeTab;\n\n const onClick = useCallback(() => {\n if (!isActive) {\n onTabChange(value);\n }\n }, [onTabChange, value, isActive]);\n\n return (\n <TabTriggerButton\n data-value={value}\n onClick={onClick}\n disabled={disabled}\n >\n {!!iconId && (\n <Icon iconId={iconId} color={iconColor ?? \"black\"} size=\"sm\" />\n )}\n <Text color={disabled ? \"grey\" : \"dark\"} variant=\"body\" bold={isActive}>\n {text}\n </Text>\n </TabTriggerButton>\n );\n }\n);\n\nconst TabTriggerButton = styled.button`\n cursor: pointer;\n outline: none;\n border: none;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n column-gap: ${ct(\"column-gap\")};\n background-color: transparent;\n padding: ${ct(\"trigger-padding-y\")} ${ct(\"trigger-padding-x\")};\n &:disabled {\n cursor: not-allowed;\n }\n`;\n","import { ReactNode, useEffect, useRef } from \"react\";\nimport { useTabContext } from \"../common/hooks/use-tab-context\";\nimport styled from \"@emotion/styled\";\nimport { getComponentTokenHelpers } from \"../../../../styles\";\n\nconst [ct] = getComponentTokenHelpers([\"tab\"]);\n\ninterface TabTriggerListProps {\n children: ReactNode;\n className?: string;\n}\n\nexport const TabTriggerList = ({\n children,\n className,\n}: TabTriggerListProps) => {\n const { activeTab } = useTabContext();\n const indicator = useRef<HTMLDivElement | null>(null);\n const listRef = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n if (listRef.current && indicator.current) {\n const activeButton = listRef.current.querySelector(\n `[data-value=${activeTab}]`\n );\n\n if (activeButton) {\n const rect = activeButton.getBoundingClientRect();\n const left = (activeButton as HTMLButtonElement).offsetLeft;\n\n indicator.current.style.width = `${rect.width}px`;\n indicator.current.style.left = `${left}px`;\n }\n }\n }, [activeTab, children]);\n\n return (\n <StyledTabTriggerList ref={listRef} className={className}>\n <Indicator ref={indicator} />\n {children}\n </StyledTabTriggerList>\n );\n};\n\nconst StyledTabTriggerList = styled.div`\n width: 100%;\n height: fit-content;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: flex-start;\n position: relative;\n border-bottom: ${ct(\"trigger-list-underline-height\")} solid\n ${ct(\"trigger-list-underline-color\")};\n background-color: transparent;\n`;\n\nconst Indicator = styled.div`\n position: absolute;\n bottom: 0px;\n transform: translateY(${ct(\"trigger-list-underline-height\")});\n height: ${ct(\"indicator-height\")};\n background-color: ${ct(\"indicator-color\")};\n transition: all 0.25s ease-in-out;\n`;\n","import { ReactNode, type CSSProperties } from \"react\";\nimport { useTabContext } from \"../common/hooks/use-tab-context\";\nimport styled from \"@emotion/styled\";\n\nexport interface TabPaneProps {\n children: ReactNode;\n className?: string;\n style?: CSSProperties;\n value: string;\n}\n\nexport const TabPane = ({\n children,\n className,\n style,\n value,\n}: TabPaneProps) => {\n const { activeTab } = useTabContext();\n\n const isActive = value === activeTab;\n\n return (\n <StyledTabPane\n className={className}\n data-active={isActive ? \"true\" : \"false\"}\n style={style}\n >\n {children}\n </StyledTabPane>\n );\n};\n\nconst StyledTabPane = styled.div`\n display: none;\n &[data-active=\"true\"] {\n display: block;\n }\n`;\n","import styled from \"@emotion/styled\";\n\nimport { getComponentTokenHelpers, TagColor } from \"../../../styles\";\n\nimport { type ReactNode } from \"react\";\nimport { Text, TextColors } from \"../text/text\";\n\ninterface TagProps {\n color: TagColor;\n children: ReactNode;\n disabled?: boolean;\n className?: string;\n}\n\ntype TagTextColors = Extract<TextColors, \"light\" | \"dark\" | \"disabled\">;\n\nconst [ct] = getComponentTokenHelpers([\"tag\"]);\n\nconst fontMap: Record<TagColor, string> = {\n purple: ct(`color-light`),\n orange: ct(`color-light`),\n light: ct(`color-dark`),\n blue: ct(`color-dark`),\n green: ct(`color-light`),\n red: ct(`color-light`),\n disabled: ct(`color-disabled`),\n};\n\nconst textColorMap: Record<TagColor, TagTextColors> = {\n purple: \"light\",\n orange: \"light\",\n light: \"dark\",\n blue: \"dark\",\n green: \"light\",\n red: \"light\",\n disabled: \"disabled\",\n};\n\nconst TagContainer = styled.div<TagProps>`\n background-color: ${(props) => ct(`bg-color-${props.color}`)};\n border-radius: ${ct(\"border-radius\")};\n border: 1px solid ${ct(\"border-color\")};\n display: flex;\n color: ${(props) => fontMap[props.color]};\n height: ${ct(\"height\")};\n max-width: 160px;\n align-items: center;\n padding: ${ct(\"padding\")};\n align-items: center;\n justify-content: center;\n gap: 4px;\n`;\n\nexport const Tag = (props: TagProps) => {\n // Determine the content based on the type of children\n const content =\n typeof props.children === \"string\" ? (\n <Text color={textColorMap[props.color]} variant=\"body\">\n {props.children}\n </Text>\n ) : (\n props.children\n );\n\n return <TagContainer {...props}>{content}</TagContainer>;\n};\n","import type { TagColor } from \"../../../styles\";\nimport { Tag } from \"../tag\";\nimport { Text } from \"../text\";\nimport { Icon } from \"../icon\";\n\ninterface Props {\n tagName: string;\n onRemove: (tagToRemove: string) => void;\n color?: TagColor;\n}\nexport const TagWithRemove: React.FunctionComponent<Props> = ({\n tagName,\n onRemove,\n color = \"light\",\n}) => (\n <Tag key={`key-tag-${tagName}`} color={color}>\n <Text variant={\"body\"}>{tagName}</Text>\n <Icon size=\"xxsm\" iconId=\"Close\" onClick={() => onRemove(tagName)} />\n </Tag>\n);\n","import type { CSSProperties, PropsWithChildren, ReactNode } from \"react\";\nimport React, { useMemo } from \"react\";\n\ninterface TextHighlightProps {\n search: string | string[];\n style?: CSSProperties;\n highlightColor?: string;\n highlightTextColor?: string;\n}\nexport const TextHighlight: React.FunctionComponent<\n PropsWithChildren<TextHighlightProps>\n> = ({ search, style, children, highlightColor, highlightTextColor }) => {\n const matchColor = highlightColor || \"yellow\";\n const _search = useMemo(\n () => (Array.isArray(search) ? search : [search].filter(Boolean)),\n [search]\n );\n if (!_search || _search.length === 0) {\n return <>{children}</>;\n }\n\n const highlightText = (text: string): ReactNode[] => {\n const regex = new RegExp(`(${_search.join(\"|\")})`, \"gi\");\n const parts = text.split(regex);\n return parts.map((part, index) =>\n _search.some((term) => term.toLowerCase() === part.toLowerCase()) ? (\n <span\n key={index}\n style={\n style\n ? style\n : {\n backgroundColor: matchColor,\n color: highlightTextColor ?? undefined,\n }\n }\n >\n {part}\n </span>\n ) : (\n part\n )\n );\n };\n\n const highlightChildren = (child: ReactNode): ReactNode => {\n if (typeof child === \"string\") {\n return highlightText(child);\n }\n\n if (React.isValidElement<{ children?: ReactNode }>(child)) {\n return React.cloneElement(child, {\n children: React.Children.map(child.props.children, highlightChildren),\n });\n }\n\n return child;\n };\n\n return <>{React.Children.map(children, highlightChildren)}</>;\n};\n","import styled from \"@emotion/styled\";\nimport type { ReactNode } from \"react\";\nimport { getComponentTokenHelpers, getSemanticToken } from \"../../../styles\";\n\nconst [ct] = getComponentTokenHelpers([\"badge\"]);\n\nexport type BadgeColors =\n | \"blue\"\n | \"red\"\n | \"white\"\n | \"black\"\n | \"orange\"\n | \"green\";\nexport type BadgePosition =\n | \"top-left\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-right\";\nexport type BadgeRadius = 4 | 6 | 8;\n\ninterface BadgeProps {\n color: BadgeColors;\n position?: BadgePosition;\n radius?: BadgeRadius;\n hide?: boolean;\n children: ReactNode;\n}\n\nexport const Badge = ({\n color,\n children,\n position,\n radius,\n hide,\n}: BadgeProps) => (\n <BadgeWrapper>\n {!hide && (\n <StyledBadge\n data-color={color}\n data-position={position ?? \"top-right\"}\n data-radius={radius ?? 4}\n />\n )}\n {children}\n </BadgeWrapper>\n);\n\nconst BadgeWrapper = styled.div`\n width: fit-content;\n height: fit-content;\n position: relative;\n`;\n\nconst StyledBadge = styled.div`\n position: absolute;\n z-index: 2;\n border-radius: 50%;\n pointer-events: none;\n border-width: 1px;\n border-style: solid;\n box-shadow: 0 1px 1px hsl(0deg 0% 0% / 0.075),\n 0 2px 2px hsl(0deg 0% 0% / 0.075), 0 4px 4px hsl(0deg 0% 0% / 0.075),\n 0 8px 8px hsl(0deg 0% 0% / 0.075), 0 16px 16px hsl(0deg 0% 0% / 0.075);\n // Color\n &[data-color=\"blue\"] {\n background-color: ${ct(\"color-blue\")};\n border-color: ${ct(\"color-blue-border\")};\n }\n &[data-color=\"red\"] {\n background-color: ${ct(\"color-red\")};\n border-color: ${ct(\"color-red-border\")};\n }\n &[data-color=\"white\"] {\n background-color: ${ct(\"color-white\")};\n border-color: ${ct(\"color-white-border\")};\n }\n &[data-color=\"black\"] {\n background-color: ${ct(\"color-black\")};\n border-color: ${ct(\"color-black-border\")};\n }\n &[data-color=\"orange\"] {\n background-color: ${ct(\"color-orange\")};\n border-color: ${ct(\"color-orange-border\")};\n }\n &[data-color=\"green\"] {\n background-color: ${ct(\"color-green\")};\n border-color: ${ct(\"color-green-border\")};\n }\n // Position\n &[data-position=\"top-right\"] {\n transform: translate(var(--xform-factor), calc(var(--xform-factor) * -1));\n top: 0;\n right: 0;\n }\n &[data-position=\"top-left\"] {\n transform: translate(\n calc(var(--xform-factor) * -1),\n calc(var(--xform-factor) * -1)\n );\n\n top: 0;\n left: 0;\n }\n &[data-position=\"bottom-right\"] {\n bottom: 0;\n right: 0;\n transform: translate(var(--xform-factor), var(--xform-factor));\n }\n &[data-position=\"bottom-left\"] {\n bottom: 0;\n left: 0;\n transform: translate(calc(var(--xform-factor) * -1), var(--xform-factor));\n }\n // Size\n &[data-radius=\"4\"] {\n width: ${getSemanticToken(\"spacing-8\")};\n height: ${getSemanticToken(\"spacing-8\")};\n --xform-factor: ${getSemanticToken(\"spacing-4\")};\n }\n &[data-radius=\"6\"] {\n width: ${getSemanticToken(\"spacing-12\")};\n height: ${getSemanticToken(\"spacing-12\")};\n --xform-factor: ${getSemanticToken(\"spacing-6\")};\n }\n &[data-radius=\"8\"] {\n width: ${getSemanticToken(\"spacing-16\")};\n height: ${getSemanticToken(\"spacing-16\")};\n --xform-factor: ${getSemanticToken(\"spacing-8\")};\n }\n`;\n","import styled from \"@emotion/styled\";\nimport { getComponentTokenHelpers } from \"../../../styles\";\nimport { forwardRef } from \"react\";\n\nconst [ct] = getComponentTokenHelpers([\"textarea\"]);\n\nexport type TextareaProps = React.TextareaHTMLAttributes<HTMLTextAreaElement>;\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\n (\n {\n autoCapitalize = \"off\",\n autoComplete = \"off\",\n autoCorrect = \"off\",\n className,\n ...props\n },\n ref\n ) => (\n <StyledTextArea\n autoCapitalize={autoCapitalize}\n autoComplete={autoComplete}\n autoCorrect={autoCorrect}\n className={className}\n ref={ref}\n {...props}\n />\n )\n);\n\nconst StyledTextArea = styled.textarea`\n display: flex;\n min-height: ${ct(\"min-height\")};\n padding: ${ct(\"padding\")};\n font-size: ${ct(\"font-size\")};\n font-family: ${ct(\"font-family\")};\n font-weight: ${ct(\"font-weight\")};\n color: ${ct(\"color\")};\n width: 100%;\n outline: none;\n box-shadow: none;\n border: ${ct(\"border-width\")} solid ${ct(\"border-color\")};\n border-radius: ${ct(\"border-radius\")};\n :active:not(:disabled):not(:read-only),\n :focus:not(:disabled):not(:read-only) {\n border-color: ${ct(\"border-color-active\")};\n }\n &[aria-invalid=\"true\"]:not(:disabled):not(:read-only) {\n border-color: ${ct(\"border-color-invalid\")};\n }\n :disabled,\n :read-only {\n cursor: not-allowed;\n color: ${ct(\"color-disabled\")};\n background-color: ${ct(\"background-color-disabled\")};\n }\n`;\n\nTextarea.displayName = \"Textarea\";\n","import { ClassNames } from \"@emotion/react\";\nimport styled from \"@emotion/styled\";\nimport { getComponentTokenHelpers } from \"../../../styles\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { Icon } from \"../icon\";\nimport { Text, type TextVariants } from \"../text\";\n\nexport interface ToggleProps {\n checked?: boolean;\n disabled?: boolean;\n label?: string;\n labelVariant?: TextVariants;\n id?: string;\n readOnly?: boolean;\n onChange?: (value: boolean) => void;\n showIcons?: boolean;\n}\n\nconst [containerCT, trackCT, thumbCT] = getComponentTokenHelpers([\n \"toggle-container\",\n \"toggle-track\",\n \"toggle-thumb\",\n]);\n\nconst ToggleIcon = styled(Icon)`\n opacity: 0;\n position: absolute;\n transition-duration: 150ms;\n transition-property: opacity;\n transition-timing-function: ease-in-out;\n`;\n\nconst ToggleContainer = styled.div`\n align-items: center;\n display: flex;\n gap: ${containerCT(\"gap\")};\n justify-content: center;\n position: relative;\n`;\n\nexport const ToggleTrack = styled.div`\n align-items: center;\n border-radius: ${trackCT(\"border-radius\")};\n cursor: pointer;\n display: flex;\n height: calc(${trackCT(\"padding-vertical\")} * 2 + ${thumbCT(\"height\")} + 2px);\n padding: ${trackCT(\"padding-vertical\")} ${trackCT(\"padding-horizontal\")};\n position: relative;\n transition-duration: ${trackCT(\"transition-duration\")};\n transition-property: background-color;\n transition-timing-function: ease-in-out;\n\n // background-color...\n background-color: ${trackCT(\"background-color-unchecked-enabled\")};\n &.isDisabled,\n &.isReadOnly {\n background-color: ${trackCT(\"background-color-unchecked-disabled\")};\n cursor: initial;\n }\n &.isChecked {\n background-color: ${trackCT(\"background-color-checked-enabled\")};\n &.isDisabled,\n &.isReadOnly {\n background-color: ${trackCT(\"background-color-checked-disabled\")};\n cursor: initial;\n }\n }\n\n // width...\n width: calc(${trackCT(\"padding-horizontal\")} * 2 + ${thumbCT(\"width\")} * 2);\n &.showIcons {\n width: ${`calc(\n ${trackCT(\"padding-horizontal\")} * 2 + ${thumbCT(\"width\")} * 2 + 4px\n )`};\n }\n`;\n\nexport const ToggleThumb = styled.div`\n border-radius: ${thumbCT(\"border-radius\")};\n box-shadow: ${thumbCT(\"box-shadow\")};\n height: ${thumbCT(\"height\")};\n transition-duration: ${thumbCT(\"transition-duration\")};\n transition-property: transform;\n transition-timing-function: ease-in-out;\n width: ${thumbCT(\"width\")};\n\n // background-color...\n background-color: ${thumbCT(\"background-color-unchecked-enabled\")};\n &.isDisabled,\n &.isReadOnly {\n background-color: ${thumbCT(\"background-color-unchecked-disabled\")};\n }\n &.isChecked {\n background-color: ${thumbCT(\"background-color-checked-enabled\")};\n &.isDisabled,\n &.isReadOnly {\n background-color: ${thumbCT(\"background-color-checked-disabled\")};\n }\n }\n\n // transform...\n transform: translate(0px, 0px);\n &.isChecked {\n transform: translate(100%, 0px);\n &.showIcons {\n transform: translate(calc(100% + 4px), 0px);\n }\n }\n`;\n\nexport const Toggle = ({\n checked,\n disabled,\n label,\n labelVariant = \"small\",\n onChange,\n showIcons,\n readOnly,\n id,\n ...props\n}: ToggleProps) => {\n const [checkedValue, setCheckedValue] = useState<boolean>(checked ?? false);\n\n useEffect(() => {\n setCheckedValue(checked ?? false);\n }, [checked]);\n\n const onClick = useCallback(() => {\n if (disabled) return;\n setCheckedValue(!checkedValue);\n onChange?.(!checkedValue);\n }, [checkedValue, disabled, onChange]);\n\n return (\n <ClassNames>\n {({ cx }) => (\n <ToggleContainer>\n {label && (\n <Text color={disabled ? \"disabled\" : \"grey\"} variant={labelVariant}>\n {label}\n </Text>\n )}\n <ToggleTrack\n id={id}\n className={cx(\n { isReadOnly: readOnly },\n checkedValue && \"isChecked\",\n disabled && \"isDisabled\",\n showIcons && \"showIcons\"\n )}\n {...props}\n onClick={onClick}\n >\n {showIcons && (\n <>\n <ToggleIcon\n color=\"white\"\n iconId=\"Close\"\n size=\"xxsm\"\n style={{ opacity: checkedValue ? 0 : 1, right: \"3px\" }}\n />\n <ToggleIcon\n color=\"white\"\n iconId=\"Check\"\n size=\"xxsm\"\n style={{ opacity: checkedValue ? 1 : 0 }}\n />\n </>\n )}\n <ToggleThumb\n className={cx(\n checkedValue && \"isChecked\",\n showIcons && \"showIcons\",\n { isReadOnly: readOnly }\n )}\n {...props}\n />\n </ToggleTrack>\n </ToggleContainer>\n )}\n </ClassNames>\n );\n};\n","import { ReactNode, useEffect, useRef, useState } from \"react\";\nimport {\n useFloating,\n autoUpdate,\n offset,\n flip,\n shift,\n useHover,\n useFocus,\n useDismiss,\n useRole,\n useInteractions,\n FloatingPortal,\n arrow,\n FloatingArrow,\n type Placement,\n} from \"@floating-ui/react\";\nimport styled from \"@emotion/styled\";\n\nconst TooltipContainer = styled.div`\n display: inline-block;\n line-height: 0;\n`;\n\nconst FloatingContainer = styled.div`\n z-index: 2;\n`;\n\nexport interface Arrow {\n d?: string;\n fill?: string;\n height?: number;\n staticOffset?: string | number | null;\n stroke?: string;\n strokeWidth?: number;\n tipRadius?: number;\n width?: number;\n}\n\nexport interface BaseTooltipProps {\n arrow?: Arrow;\n children: ReactNode;\n content: ReactNode;\n open?: boolean;\n openDelay?: number;\n className?: string;\n placement?: Placement;\n offset?: number;\n}\n\nexport const BaseTooltip = ({\n arrow: arrowProps,\n children,\n content,\n open,\n openDelay = 250,\n className,\n placement,\n offset: _offset,\n}: BaseTooltipProps) => {\n const arrowRef = useRef(null);\n\n const [isOpen, setIsOpen] = useState(open);\n\n useEffect(() => {\n if (open !== undefined) setIsOpen(open);\n }, [open]);\n\n const { refs, floatingStyles, context } = useFloating({\n open: isOpen,\n onOpenChange: open === undefined ? setIsOpen : undefined,\n placement: placement ?? \"top\",\n whileElementsMounted: autoUpdate, // Make sure the tooltip stays on the screen\n middleware: [\n offset(_offset ?? 12),\n flip({ fallbackAxisSideDirection: \"start\" }),\n shift(),\n arrow({ element: arrowRef }),\n ],\n });\n\n // Event listeners to change the open state\n const hover = useHover(context, { move: false, restMs: openDelay });\n const focus = useFocus(context);\n const dismiss = useDismiss(context);\n const role = useRole(context, { role: \"tooltip\" }); // Role props for screen readers\n\n // Merge all the interactions into prop getters\n const { getReferenceProps, getFloatingProps } = useInteractions([\n hover,\n focus,\n dismiss,\n role,\n ]);\n\n return (\n <>\n <TooltipContainer\n className={className}\n ref={refs.setReference}\n {...getReferenceProps()}\n >\n {children}\n </TooltipContainer>\n <FloatingPortal>\n {isOpen && (\n <FloatingContainer\n ref={refs.setFloating}\n style={floatingStyles}\n {...getFloatingProps()}\n >\n <FloatingArrow {...arrowProps} ref={arrowRef} context={context} />\n {content}\n </FloatingContainer>\n )}\n </FloatingPortal>\n </>\n );\n};\n","import styled from \"@emotion/styled\";\nimport { Text } from \"../../text\";\nimport { Arrow, BaseTooltip, BaseTooltipProps } from \"../base-tooltip\";\n\ninterface LightTooltipStyleProps {\n contain?: boolean;\n}\n\nexport const LightTooltipStyle = styled.div<LightTooltipStyleProps>`\n background-color: #ffffff;\n border-radius: 0px;\n box-shadow: 2px 4px 6px rgba(0, 0, 0, 0.12);\n color: #262626;\n display: flex;\n align-items: center;\n padding: ${(props) => props.contain && `7px 10px`};\n`;\n\nexport const lightTooltipArrow: Arrow = {\n fill: \"#ffffff\",\n height: 12,\n tipRadius: 0,\n width: 14,\n};\n\nexport interface LightTooltipProps extends BaseTooltipProps {\n contain?: boolean;\n}\n\nexport const LightTooltip = ({\n arrow = lightTooltipArrow,\n children,\n contain = true,\n content,\n ...props\n}: LightTooltipProps) => (\n <BaseTooltip\n arrow={arrow}\n content={\n <LightTooltipStyle contain={contain}>\n <Text color=\"dark\" variant=\"body\">\n {content}\n </Text>\n </LightTooltipStyle>\n }\n {...props}\n >\n {children}\n </BaseTooltip>\n);\n","import styled from \"@emotion/styled\";\nimport { ReactNode } from \"react\";\nimport { Text } from \"../../text\";\nimport { LightTooltip, LightTooltipProps } from \"../light-tooltip\";\nimport { Icon, IconColors, IconIds } from \"../../icon\";\n\ntype AlertType = \"error\" | \"info\" | \"success\" | \"warning\";\n\nconst AlertContainer = styled.div`\n display: flex;\n flex-direction: column;\n min-width: 160px;\n`;\n\nconst AlertHeaderContainer = styled.div`\n display: flex;\n gap: 8px;\n height: 28px;\n padding: 7px 10px;\n`;\n\nconst AlertDivider = styled.div`\n border-top: 1px solid #dfdfdf;\n`;\n\nconst AlertInformationContainer = styled.div`\n padding: 7px 12px;\n`;\n\nconst getAlertIconColor = (alertType: AlertType): IconColors => {\n switch (alertType) {\n case \"error\":\n return \"red\";\n case \"info\":\n return \"blue\";\n case \"success\":\n return \"green\";\n case \"warning\":\n return \"orange\";\n default:\n return \"blue\";\n }\n};\n\nconst getAlertIconId = (alertType: AlertType): IconIds => {\n switch (alertType) {\n case \"error\":\n case \"info\":\n return \"ExclamationCircle\";\n case \"success\":\n return \"CheckCircle\";\n case \"warning\":\n return \"Warning\";\n default:\n return \"ExclamationCircle\";\n }\n};\n\ninterface AlertProps {\n message: ReactNode;\n title?: string;\n type?: AlertType;\n}\n\nconst Alert = ({\n message,\n title = \"Information\",\n type = \"info\",\n}: AlertProps) => (\n <AlertContainer>\n <AlertHeaderContainer>\n <Icon color={getAlertIconColor(type)} iconId={getAlertIconId(type)} />\n <Text bold variant=\"body\">\n {title}\n </Text>\n </AlertHeaderContainer>\n <AlertDivider />\n <AlertInformationContainer>\n <Text variant=\"body\">{message}</Text>\n </AlertInformationContainer>\n </AlertContainer>\n);\n\nexport interface AlertTooltipProps\n extends AlertProps,\n Omit<LightTooltipProps, \"arrow\" | \"contain\" | \"content\"> {}\n\nexport const AlertTooltip = ({\n children,\n open,\n openDelay,\n className,\n ...alert\n}: AlertTooltipProps) => (\n <LightTooltip\n contain={false}\n content={<Alert {...alert} />}\n open={open}\n openDelay={openDelay}\n className={className}\n >\n {children}\n </LightTooltip>\n);\n","import styled from \"@emotion/styled\";\nimport { Text } from \"../../text\";\nimport { Arrow, BaseTooltip, BaseTooltipProps } from \"../base-tooltip\";\n\ninterface DarkTooltipStyleProps {\n contain?: boolean;\n}\n\nexport const DarkTooltipStyle = styled.div<DarkTooltipStyleProps>`\n background-color: #000000;\n border-radius: 4px;\n color: #ffffff;\n display: flex;\n gap: 8px;\n padding: ${(props) => props.contain && \"4px 8px\"};\n`;\n\nexport const darkTooltipArrow: Arrow = {\n fill: \"#000000\",\n height: 10,\n tipRadius: 2,\n width: 11,\n};\n\nexport interface DarkTooltipProps extends BaseTooltipProps {\n contain?: boolean;\n}\n\nexport const DarkTooltip = ({\n arrow = darkTooltipArrow,\n children,\n contain = true,\n content,\n ...props\n}: DarkTooltipProps) => (\n <BaseTooltip\n arrow={arrow}\n content={\n <DarkTooltipStyle contain={contain}>\n <Text color=\"light\" variant=\"small\">\n {content}\n </Text>\n </DarkTooltipStyle>\n }\n {...props}\n >\n {children}\n </BaseTooltip>\n);\n","import { AlertTooltip, AlertTooltipProps } from \"../alert-tooltip\";\n\nexport type ErrorTooltipProps = Omit<AlertTooltipProps, \"type\">;\n\nexport const ErrorTooltip = ({ title, ...props }: ErrorTooltipProps) => (\n <AlertTooltip {...props} title={title ?? \"Error\"} type=\"error\" />\n);\n","import styled from \"@emotion/styled\";\nimport { ReactNode } from \"react\";\nimport { Text } from \"../../text\";\nimport { LightTooltip, LightTooltipProps } from \"../light-tooltip\";\nimport { Icon } from \"../../icon\";\n\nconst SelectorContainer = styled.div`\n display: flex;\n gap: 4px;\n`;\n\ninterface SelectorProps {\n label: ReactNode;\n value: ReactNode;\n}\n\nconst Selector = ({ label, value }: SelectorProps) => (\n <SelectorContainer>\n <Icon iconId=\"CheckSquare\" size=\"sm\" color=\"purple\" />\n <Text bold variant=\"body\">\n {label}:\n </Text>\n <Text variant=\"body\">{value}</Text>\n </SelectorContainer>\n);\n\nexport interface SelectorTooltipProps\n extends SelectorProps,\n Omit<LightTooltipProps, \"arrow\" | \"contain\" | \"content\"> {}\n\nexport const SelectorTooltip = ({\n children,\n open,\n openDelay,\n ...selector\n}: SelectorTooltipProps) => (\n <LightTooltip\n content={<Selector {...selector} />}\n open={open}\n openDelay={openDelay}\n >\n {children}\n </LightTooltip>\n);\n","import { AlertTooltip, AlertTooltipProps } from \"./alert-tooltip\";\nimport { DarkTooltip, DarkTooltipProps } from \"./dark-tooltip\";\nimport { ErrorTooltip, ErrorTooltipProps } from \"./error-tooltip\";\nimport { LightTooltip, LightTooltipProps } from \"./light-tooltip\";\nimport { SelectorTooltip, SelectorTooltipProps } from \"./selector-tooltip\";\n\ntype AlertTooltipVariant = AlertTooltipProps & { variant: \"alert\" };\ntype DarkTooltipVariant = DarkTooltipProps & { variant: \"dark\" };\ntype ErrorTooltipVariant = ErrorTooltipProps & { variant: \"error\" };\ntype LightTooltipVariant = LightTooltipProps & { variant: \"light\" };\ntype SelectorTooltipVariant = SelectorTooltipProps & { variant: \"selector\" };\n\ntype TooltipProps =\n | AlertTooltipVariant\n | DarkTooltipVariant\n | ErrorTooltipVariant\n | LightTooltipVariant\n | SelectorTooltipVariant;\n\nexport const Tooltip = ({ variant, ...props }: TooltipProps) => {\n let Component;\n\n switch (variant) {\n case \"alert\":\n Component = AlertTooltip;\n break;\n case \"dark\":\n Component = DarkTooltip;\n break;\n case \"error\":\n Component = ErrorTooltip;\n break;\n case \"light\":\n Component = LightTooltip;\n break;\n case \"selector\":\n Component = SelectorTooltip;\n break;\n }\n\n return <Component {...props} />;\n};\n","import { createContext, useContext, type ReactNode } from \"react\";\nimport type { MultiSelectOption, MultiSelectToggle } from \"./types\";\n\nexport interface MultiSelectContextValue {\n selected: MultiSelectOption[];\n onToggleSelect: MultiSelectToggle;\n onSetSelected: (selected: MultiSelectOption[]) => void;\n open: boolean;\n setOpen: (open: boolean) => void;\n}\n\nexport const MultiSelectContext = createContext<MultiSelectContextValue | null>(\n null\n);\n\ninterface MultiSelectContextProviderProps {\n children: ReactNode;\n value: MultiSelectContextValue;\n}\n\nexport const MultiSelectContextProvider = ({\n children,\n value,\n}: MultiSelectContextProviderProps) => (\n <MultiSelectContext.Provider value={value}>\n {children}\n </MultiSelectContext.Provider>\n);\n\nexport const useMultiSelectContext = () => {\n const context = useContext(MultiSelectContext);\n\n if (!context) {\n throw new Error(\n \"Unable to use MultiSelectContext outside of its provider.\"\n );\n }\n\n return context;\n};\n","import styled from \"@emotion/styled\";\nimport { getComponentTokenHelpers } from \"../../../../styles\";\n\nconst [ct] = getComponentTokenHelpers([\"multi-select\"]);\n\nexport const MultiSelectItemWrapper = styled.div`\n width: 100%;\n padding: ${ct(\"item-padding-y\")} ${ct(\"item-padding-x\")};\n display: flex;\n align-items: center;\n justify-content: flex-start;\n column-gap: ${ct(\"item-gap\")};\n background-color: ${ct(\"background\")};\n cursor: pointer;\n transition: background 0.125s ease-in-out;\n &:hover {\n background-color: ${ct(\"item-hover-bg\")};\n }\n`;\n","import { memo, useCallback, useEffect, useMemo, useRef } from \"react\";\nimport type {\n MultiSelectOption,\n SelectAllItemTemplateType,\n} from \"../common/types\";\nimport { useMultiSelectContext } from \"../common/use-multi-select-context\";\nimport { CheckBox } from \"../../checkbox\";\nimport { Text } from \"../../text\";\nimport { MultiSelectItemWrapper } from \"../common/styles\";\nimport styled from \"@emotion/styled\";\nimport { getComponentTokenHelpers } from \"../../../../styles\";\nimport { noop } from \"../../../../helpers\";\n\nconst [ct] = getComponentTokenHelpers([\"multi-select\"]);\n\ninterface MultiSelectAllItemProps {\n SelectAllItemTemplate?: SelectAllItemTemplateType;\n options: MultiSelectOption[];\n}\n\nexport const MultiSelectAllItem = memo(\n ({ SelectAllItemTemplate, options }: MultiSelectAllItemProps) => {\n const { selected, onSetSelected, setOpen } = useMultiSelectContext();\n\n const checkBoxRef = useRef<HTMLInputElement | null>(null);\n\n const { isAllSelected, isPartiallySelected } = useMemo(() => {\n const _isAllSelected = options.every((option) =>\n selected.some((selectedOption) => selectedOption.value === option.value)\n );\n\n return {\n isAllSelected: _isAllSelected,\n isPartiallySelected: !_isAllSelected && selected.length !== 0,\n };\n }, [selected, options]);\n\n const onToggleSelectAll = useCallback(() => {\n if (isAllSelected) {\n onSetSelected([]);\n } else {\n onSetSelected(options);\n }\n setOpen(false);\n }, [isAllSelected, setOpen, onSetSelected, options]);\n\n useEffect(() => {\n if (checkBoxRef.current) {\n checkBoxRef.current.indeterminate = isPartiallySelected;\n }\n }, [isPartiallySelected]);\n\n if (SelectAllItemTemplate) {\n return (\n <SelectAllItemTemplate\n onToggleSelectAll={onToggleSelectAll}\n isAllSelected={isAllSelected}\n isPartiallySelected={isPartiallySelected}\n />\n );\n }\n\n return (\n <SelectAllWrapper onClick={onToggleSelectAll}>\n <CheckBox ref={checkBoxRef} onChange={noop} checked={isAllSelected} />\n <Text variant=\"body\" color=\"dark\">\n {isAllSelected ? \"Deselect All\" : \"Select All\"}\n </Text>\n </SelectAllWrapper>\n );\n }\n);\n\nconst SelectAllWrapper = styled(MultiSelectItemWrapper)`\n border-bottom: ${ct(\"border\")} solid ${ct(\"select-all-border-color\")};\n position: sticky;\n top: 0;\n z-index: 2;\n padding-top: calc(${ct(\"item-padding-y\")} * 2);\n background-color: ${ct(\"background\")};\n`;\n","import { memo } from \"react\";\nimport type {\n MultiSelectItemTemplateType,\n MultiSelectToggle,\n} from \"../common/types\";\nimport { MultiSelectItemWrapper } from \"../common/styles\";\nimport { CheckBox } from \"../../checkbox\";\nimport { Text } from \"../../text\";\nimport { noop } from \"../../../../helpers\";\n\ninterface MultiSelectItemProps {\n ListItemTemplate?: MultiSelectItemTemplateType;\n value: string;\n label: string;\n isSelected: boolean;\n onToggleSelect: MultiSelectToggle;\n}\n\nexport const MultiSelectItem = memo(\n ({\n value,\n label,\n isSelected,\n ListItemTemplate,\n onToggleSelect,\n }: MultiSelectItemProps) => {\n if (ListItemTemplate) {\n return (\n <ListItemTemplate value={value} label={label} isSelected={isSelected} />\n );\n }\n\n return (\n <MultiSelectItemWrapper onClick={() => onToggleSelect({ value, label })}>\n <CheckBox onChange={noop} checked={isSelected} />\n <Text variant=\"body\" color=\"dark\">\n {label}\n </Text>\n </MultiSelectItemWrapper>\n );\n }\n);\n","import { memo } from \"react\";\nimport type {\n MultiSelectOption,\n MultiSelectSelectedItemType,\n} from \"../common/types\";\nimport styled from \"@emotion/styled\";\nimport { getComponentTokenHelpers } from \"../../../../styles\";\nimport { Text } from \"../../text\";\nimport { IconButton } from \"../../icon-button\";\n\nconst [ct] = getComponentTokenHelpers([\"multi-select\"]);\n\ninterface SelectedMultiSelectItemProps {\n label: string;\n value: string;\n onRemove: (option: MultiSelectOption) => void;\n SelectedItemTemplate?: MultiSelectSelectedItemType;\n}\n\nexport const SelectedMultiSelectItem = memo(\n ({\n value,\n label,\n onRemove,\n SelectedItemTemplate,\n }: SelectedMultiSelectItemProps) => {\n if (SelectedItemTemplate) {\n return (\n <SelectedItemTemplate value={value} label={label} onRemove={onRemove} />\n );\n }\n return (\n <StyledSelectedItem>\n <Text variant=\"body\" color=\"dark\">\n {label}\n </Text>\n <IconButton\n size=\"xxsm\"\n color=\"black\"\n iconId=\"Close\"\n onClick={() => onRemove({ value, label })}\n />\n </StyledSelectedItem>\n );\n }\n);\n\nconst StyledSelectedItem = styled.div`\n padding: ${ct(\"selected-item-padding-y\")} ${ct(\"selected-item-padding-x\")};\n display: flex;\n align-items: center;\n justify-content: flex-start;\n column-gap: ${ct(\"selected-item-gap\")};\n background-color: ${ct(\"selected-item-background\")};\n transition: background 0.125s ease-in-out;\n border-radius: ${ct(\"selected-item-radius\")};\n :hover {\n background-color: ${ct(\"selected-item-background-hover\")};\n }\n`;\n","import styled from \"@emotion/styled\";\nimport { memo, useCallback, useMemo, useState } from \"react\";\nimport { getComponentTokenHelpers } from \"../../../styles\";\nimport {\n autoUpdate,\n FloatingFocusManager,\n FloatingPortal,\n useClick,\n useDismiss,\n useFloating,\n useInteractions,\n useRole,\n} from \"@floating-ui/react\";\nimport { SAME_SIZE_SELECT_MIDDLEWARE } from \"../common/constants\";\nimport {\n MultiSelectContextProvider,\n type MultiSelectContextValue,\n} from \"./common/use-multi-select-context\";\nimport type {\n MultiSelectItemTemplateType,\n MultiSelectOption,\n MultiSelectSelectedItemType,\n SelectAllItemTemplateType,\n} from \"./common/types\";\nimport { MultiSelectAllItem } from \"./components/multi-select-all-item\";\nimport { MultiSelectItem } from \"./components/multi-select-item\";\nimport cx from \"classnames\";\nimport { SelectedMultiSelectItem } from \"./components/selected-multi-select-item\";\n\nconst [ct] = getComponentTokenHelpers([\"multi-select\"]);\n\nexport interface MultiSelectProps {\n selected: MultiSelectOption[];\n disabled?: boolean;\n options: MultiSelectOption[];\n className?: string;\n selectAllHidden?: boolean;\n closeOnSelect?: boolean;\n onChange: (newSelected: MultiSelectOption[]) => void;\n SelectedItemTemplate?: MultiSelectSelectedItemType;\n ListItemTemplate?: MultiSelectItemTemplateType;\n SelectAllItemTemplate?: SelectAllItemTemplateType;\n}\n\nexport const MultiSelect = memo(\n ({\n options,\n selected,\n className,\n closeOnSelect,\n onChange,\n disabled,\n selectAllHidden,\n SelectAllItemTemplate,\n ListItemTemplate,\n SelectedItemTemplate,\n }: MultiSelectProps) => {\n const [open, setOpen] = useState(false);\n\n const onOpenChange = useCallback((_open: boolean) => {\n console.log({ _open });\n setOpen(_open);\n }, []);\n\n const { refs, floatingStyles, context } = useFloating({\n placement: \"bottom\",\n open,\n onOpenChange,\n whileElementsMounted: autoUpdate,\n middleware: SAME_SIZE_SELECT_MIDDLEWARE,\n });\n\n const click = useClick(context, {\n enabled: !disabled,\n toggle: !!closeOnSelect,\n });\n const dismiss = useDismiss(context);\n const role = useRole(context, { role: \"listbox\" });\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n click,\n dismiss,\n role,\n ]);\n\n const onToggleSelect = useCallback(\n (toToggle: MultiSelectOption) => {\n if (selected.some((option) => option.value === toToggle.value)) {\n onChange(\n selected.filter((option) => option.value !== toToggle.value)\n );\n } else {\n onChange([...selected, toToggle]);\n }\n },\n [onChange, selected]\n );\n\n const contextValue = useMemo<MultiSelectContextValue>(() => {\n return {\n open,\n setOpen,\n selected,\n onToggleSelect,\n onSetSelected: onChange,\n };\n }, [onToggleSelect, open, selected, onChange]);\n\n console.log({ open });\n\n return (\n <MultiSelectContextProvider value={contextValue}>\n <StyledMultiSelect\n ref={refs.setReference}\n className={className}\n {...getReferenceProps({\n onClick(event) {\n event.stopPropagation();\n },\n })}\n >\n {selected.map((option) => (\n <SelectedMultiSelectItem\n SelectedItemTemplate={SelectedItemTemplate}\n {...option}\n key={option.value}\n onRemove={onToggleSelect}\n />\n ))}\n {open && (\n <FloatingPortal>\n <FloatingFocusManager context={context} modal={false}>\n <ListBox\n ref={refs.setFloating}\n style={floatingStyles}\n className={cx({\n selectAllHidden:\n !!selectAllHidden || !!SelectAllItemTemplate,\n })}\n {...getFloatingProps()}\n >\n {!selectAllHidden && (\n <MultiSelectAllItem\n SelectAllItemTemplate={SelectAllItemTemplate}\n options={options}\n />\n )}\n {options.map((option) => (\n <MultiSelectItem\n label={option.label}\n key={option.value}\n value={option.value}\n onToggleSelect={onToggleSelect}\n isSelected={selected.some(\n (selectedOption) =>\n option.value === selectedOption.value\n )}\n ListItemTemplate={ListItemTemplate}\n />\n ))}\n </ListBox>\n </FloatingFocusManager>\n </FloatingPortal>\n )}\n </StyledMultiSelect>\n </MultiSelectContextProvider>\n );\n }\n);\n\nconst StyledMultiSelect = styled.div`\n width: 100%;\n height: fit-content;\n min-height: 28px;\n padding: ${ct(\"padding-y\")} ${ct(\"padding-x\")};\n border-radius: ${ct(\"border-radius\")};\n display: flex;\n align-items: flex-start;\n justify-content: flex-start;\n border-width: ${ct(\"border\")};\n border-style: solid;\n border-color: ${ct(\"border-color\")};\n background-color: ${ct(\"background\")};\n gap: ${ct(\"gap\")};\n &:hover {\n border-color: ${ct(\"hover-border-color\")};\n }\n`;\n\nconst ListBox = styled.div`\n display: flex;\n flex-direction: column;\n border: ${ct(\"border\")} solid ${ct(\"border-color\")};\n box-shadow: 0px 0px 4px 0px rgba(0, 0, 0, 0.25);\n outline: 0;\n border-radius: ${ct(\"border-radius\")};\n z-index: 2;\n max-height: 160px;\n overflow: auto;\n padding-bottom: ${ct(\"list-padding\")};\n padding-left: ${ct(\"list-padding\")};\n padding-right: ${ct(\"list-padding\")};\n background-color: ${ct(\"background\")};\n &.selectAllHidden {\n padding-top: ${ct(\"list-padding\")};\n }\n`;\n","import { memo, useId } from \"react\";\n\ninterface KOSLogoProps {\n className?: string;\n}\n\nexport const KOSLogo = memo<KOSLogoProps>(({ className }) => {\n const id = useId();\n return (\n <svg\n width=\"48\"\n height=\"48\"\n viewBox=\"0 0 48 48\"\n fill=\"none\"\n className={className}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clipPath={`url(#${id}-clip-0)`}>\n <mask\n id={`${id}-mask-1`}\n style={{ maskType: \"luminance\" }}\n maskUnits=\"userSpaceOnUse\"\n x=\"0\"\n y=\"0\"\n width=\"48\"\n height=\"48\"\n >\n <path d=\"M47.95 0H0V47.95H47.95V0Z\" fill=\"white\" />\n </mask>\n <g mask={`url(#${id}-mask-1)`}>\n <path\n d=\"M36.9766 0H10.9735C4.913 0 0 4.913 0 10.9735V36.9766C0 43.037 4.913 47.95 10.9735 47.95H36.9766C43.037 47.95 47.95 43.037 47.95 36.9766V10.9735C47.95 4.913 43.037 0 36.9766 0Z\"\n fill=\"black\"\n />\n <path\n d=\"M30.8827 24.7424C30.8827 25.7291 30.6646 26.6208 30.2341 27.393C29.8056 28.1617 29.2034 28.7704 28.4449 29.2013C27.6857 29.6323 26.8124 29.8504 25.8494 29.8504C24.8864 29.8504 24.0126 29.6323 23.2536 29.2013C22.495 28.7704 21.8929 28.1623 21.4643 27.393C21.0339 26.6208 20.8157 25.7291 20.8157 24.7424C20.8157 24.0474 20.9643 23.4216 21.258 22.8811C21.5493 22.345 21.9583 21.92 22.4736 21.6186C22.9907 21.3166 23.5864 21.1638 24.245 21.1638C24.9037 21.1638 25.5 21.3166 26.0166 21.6186C26.5319 21.92 26.9409 22.3444 27.2321 22.8811C27.5259 23.4216 27.6744 24.0481 27.6744 24.7424C27.6744 23.7556 27.4563 22.864 27.0259 22.0917C26.5973 21.3226 25.9951 20.7144 25.2366 20.2834C24.4781 19.8524 23.6049 19.6343 22.6407 19.6343C21.6764 19.6343 20.8039 19.8524 20.0453 20.2834C19.2867 20.7144 18.6846 21.3231 18.256 22.0917C17.8256 22.864 17.6074 23.7556 17.6074 24.7424C17.6074 25.9764 17.8951 27.0964 18.4628 28.0707C19.0311 29.0468 19.8288 29.8184 20.833 30.3636C21.8334 30.9068 22.9819 31.182 24.2457 31.182C25.5094 31.182 26.6586 30.9068 27.659 30.3636C28.663 29.8184 29.4607 29.0474 30.029 28.0707C30.5967 27.0964 30.8844 25.9764 30.8844 24.7424H30.8827Z\"\n fill=\"white\"\n />\n <path\n d=\"M17.6073 24.7424C17.6073 23.7556 17.8255 22.864 18.2558 22.0917C18.6845 21.3232 19.2866 20.7144 20.0452 20.2834C20.8042 19.8524 21.6775 19.6343 22.6405 19.6343C23.6035 19.6343 24.4773 19.8524 25.2365 20.2834C25.9949 20.7144 26.5972 21.3226 27.0258 22.0917C27.456 22.864 27.6743 23.7556 27.6743 24.7424C27.6743 25.4373 27.5256 26.0633 27.232 26.6036C26.9408 27.1399 26.5318 27.5649 26.0163 27.8663C25.4992 28.1682 24.9036 28.321 24.2449 28.321C23.5862 28.321 22.99 28.1682 22.4735 27.8663C21.958 27.5649 21.549 27.1404 21.2578 26.6036C20.9642 26.0633 20.8155 25.4367 20.8155 24.7424C20.8155 25.7292 21.0338 26.6209 21.464 27.393C21.8926 28.1623 22.4949 28.7704 23.2533 29.2014C24.0119 29.6323 24.8852 29.8506 25.8493 29.8506C26.8135 29.8506 27.6862 29.6323 28.4446 29.2014C29.2032 28.7704 29.8053 28.1617 30.234 27.393C30.6643 26.6209 30.8825 25.7292 30.8825 24.7424C30.8825 23.5083 30.5948 22.3884 30.027 21.4142C29.4588 20.438 28.661 19.6664 27.657 19.1213C26.6566 18.578 25.508 18.3027 24.2443 18.3027C22.9805 18.3027 21.8315 18.578 20.831 19.1213C19.8269 19.6664 19.0292 20.4374 18.4609 21.4142C17.8932 22.3884 17.6055 23.5083 17.6055 24.7424H17.6073Z\"\n fill=\"white\"\n />\n <path\n d=\"M17.6072 24.7424C17.6072 23.7556 17.8253 22.864 18.2558 22.0917C18.6843 21.3232 19.2865 20.7144 20.045 20.2834C20.8042 19.8524 21.6775 19.6343 22.6405 19.6343C23.6035 19.6343 24.4773 19.8524 25.2363 20.2834C25.9949 20.7144 26.597 21.3226 27.0256 22.0917C27.456 22.864 27.6742 23.7556 27.6742 24.7424C27.6742 25.4373 27.5256 26.0633 27.2319 26.6036C26.9406 27.1399 26.5316 27.5649 26.0163 27.8663C25.4992 28.1682 24.9035 28.321 24.2449 28.321C23.5862 28.321 22.9899 28.1682 22.4733 27.8663C21.958 27.5649 21.549 27.1404 21.2578 26.6036C20.964 26.0633 20.8155 25.4367 20.8155 24.7424C20.8155 25.7292 21.0336 26.6209 21.464 27.393C21.8926 28.1623 22.4948 28.7704 23.2533 29.2014C24.0118 29.6323 24.885 29.8504 25.8492 29.8504C26.8135 29.8504 27.686 29.6323 28.4446 29.2014C29.2032 28.7704 29.8053 28.1617 30.2339 27.393C30.6643 26.6209 30.8825 25.7292 30.8825 24.7424C30.8825 23.5083 30.5948 22.3884 30.027 21.4142C29.4588 20.438 28.661 19.6664 27.657 19.1213C26.6565 18.578 25.508 18.3027 24.2442 18.3027C22.9805 18.3027 21.8313 18.578 20.8309 19.1213C19.8269 19.6664 19.0292 20.4374 18.4609 21.4142C17.8932 22.3884 17.6055 23.5083 17.6055 24.7424H17.6072Z\"\n fill={`url(#${id}-paint-0)`}\n />\n <path\n d=\"M41.6791 24.6258C41.0531 23.9767 40.1179 23.5308 38.8969 23.3002L36.5435 22.8692C35.7981 22.7276 35.4831 22.5744 35.3499 22.4704C35.1865 22.3431 35.1073 22.2075 35.1073 22.0559C35.1073 21.9627 35.1073 21.6791 35.6429 21.4015C36.0525 21.1892 36.5798 21.0817 37.2099 21.0817C38.3548 21.0817 39.4248 21.4585 40.3902 22.2022C40.4639 22.2592 40.5561 22.2902 40.6488 22.2902C40.7791 22.2902 40.8991 22.2314 40.9793 22.1291L42.2705 20.4789C42.4096 20.3012 42.3841 20.0462 42.2116 19.8981C41.5946 19.3691 40.8641 18.9702 40.0383 18.7128C39.1662 18.4411 38.2425 18.3032 37.2925 18.3032C36.2821 18.3032 35.3618 18.4595 34.5569 18.7675C33.7378 19.0814 33.0875 19.5409 32.6238 20.1329C32.1535 20.7339 31.9152 21.4479 31.9152 22.2539C31.9152 23.1479 32.2159 23.9077 32.8086 24.5122C33.3906 25.1061 34.2698 25.5175 35.4218 25.7362L37.9572 26.2165C38.5236 26.3301 38.9231 26.4757 39.1449 26.6487C39.3392 26.8009 39.4296 26.9691 39.4296 27.1795C39.4296 27.4749 39.2572 27.7247 38.9029 27.9428C38.5142 28.1818 37.9839 28.3036 37.3271 28.3036C35.9058 28.3036 34.6585 27.8589 33.6206 26.9816C33.5452 26.9179 33.4495 26.8829 33.3508 26.8829C33.2242 26.8829 33.1052 26.9388 33.0251 27.0369L31.6275 28.7369C31.4823 28.9135 31.5038 29.1704 31.6756 29.3219C32.2921 29.8652 33.0988 30.2998 34.0736 30.6137C35.1062 30.9465 36.2398 31.1154 37.4435 31.1154C38.4576 31.1154 39.3642 30.9465 40.1388 30.6137C40.9258 30.2754 41.5446 29.7887 41.9798 29.1662C42.4173 28.5397 42.6391 27.8102 42.6391 26.9982C42.6391 26.0834 42.3168 25.2851 41.6808 24.6252L41.6791 24.6258Z\"\n fill={`url(#${id}-paint-1)`}\n />\n <path\n d=\"M12.9952 24.6802L18.8296 19.0464C19.0549 18.8271 19.0123 18.6261 18.9817 18.5529C18.9513 18.4799 18.8477 18.3032 18.5312 18.3032H15.5957C15.3764 18.3032 15.0963 18.4129 14.9319 18.5712L10.0172 23.3951V18.7357C10.0172 18.4981 9.82227 18.3032 9.58476 18.3032H7.26443C7.02692 18.3032 6.83203 18.4981 6.83203 18.7357V30.6249C6.83203 30.8624 7.02692 31.0574 7.26443 31.0574H9.58476C9.82227 31.0574 10.0172 30.8624 10.0172 30.6249V25.9655L14.9319 30.7894C15.0902 30.9417 15.3703 31.0574 15.5896 31.0574H18.525C18.8417 31.0574 18.9453 30.8807 18.9757 30.8077C19.0062 30.7345 19.0487 30.5335 18.8234 30.3142L12.9952 24.6802Z\"\n fill=\"white\"\n />\n </g>\n </g>\n <defs>\n <linearGradient\n id={`${id}-paint-0`}\n x1=\"24.2439\"\n y1=\"19.4779\"\n x2=\"24.2439\"\n y2=\"28.6754\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop offset=\"0.0358168\" stopColor=\"#82E1FF\" />\n <stop offset=\"0.228529\" stopColor=\"#78E6A0\" />\n <stop offset=\"0.436866\" stopColor=\"#FFB400\" />\n <stop offset=\"0.619161\" stopColor=\"#FF8700\" />\n <stop offset=\"0.811872\" stopColor=\"#FF5A00\" />\n <stop offset=\"1\" stopColor=\"#F40000\" />\n </linearGradient>\n <linearGradient\n id={`${id}-paint-1`}\n x1=\"37.0852\"\n y1=\"19.6069\"\n x2=\"37.0852\"\n y2=\"29.8117\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop offset=\"0.0358168\" stopColor=\"#82E1FF\" />\n <stop offset=\"0.228529\" stopColor=\"#78E6A0\" />\n <stop offset=\"0.436866\" stopColor=\"#FFB400\" />\n <stop offset=\"0.619161\" stopColor=\"#FF8700\" />\n <stop offset=\"0.811872\" stopColor=\"#FF5A00\" />\n <stop offset=\"1\" stopColor=\"#F40000\" />\n </linearGradient>\n <clipPath id={`${id}-clip-0`}>\n <rect width=\"48\" height=\"48\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n );\n});\n","import { memo, useCallback } from \"react\";\nimport styled from \"@emotion/styled\";\nimport { getComponentTokenHelpers } from \"../../../../styles\";\nimport { ClassNames } from \"@emotion/react\";\nimport { Text } from \"../../../atoms/text\";\nimport { Icon } from \"../../../atoms/icon\";\nimport { ListItem } from \"../../list\";\nimport { MiddleTruncateText } from \"../../../atoms\";\n\nconst [ct] = getComponentTokenHelpers([\"collapsible-artifact-version\"]);\n\nexport interface ArtifactVersionProps extends ListItem {\n isSelected: boolean;\n isInherited?: boolean;\n createdAt?: string;\n description?: string;\n}\n\nexport const ArtifactVersion = memo(\n ({\n onListItemAction,\n isSelected,\n isInherited,\n id,\n name,\n createdAt,\n description,\n }: ArtifactVersionProps) => {\n const _onSelect = useCallback(() => {\n // Inherited items cant be removed / added. Only disabled.\n if (onListItemAction && !isInherited) {\n onListItemAction(id, isSelected ? \"deselect\" : \"select\");\n }\n }, [id, isInherited, isSelected, onListItemAction]);\n\n return (\n <ClassNames>\n {({ cx }) => (\n <StyledArtifactVersion\n onClick={_onSelect}\n className={cx({ isSelected, isInherited })}\n >\n <TextWrapper>\n <NameRow>\n <Text variant=\"small\" color=\"dark\" bold>\n {name}\n </Text>\n {!!createdAt && (\n <Text color=\"grey\" variant=\"small\">\n {createdAt}\n </Text>\n )}\n </NameRow>\n {description && (\n <MiddleTruncateText color=\"grey\" variant=\"small\">\n {`${description}${description}`}\n </MiddleTruncateText>\n )}\n </TextWrapper>\n {isSelected ? (\n <SelectedIcon\n size=\"xsm\"\n color=\"blue\"\n iconId={isSelected ? \"Check\" : \"InfoCircle\"}\n />\n ) : isInherited ? (\n <Icon iconId=\"Inherited\" color=\"purple\" />\n ) : null}\n </StyledArtifactVersion>\n )}\n </ClassNames>\n );\n }\n);\n\nconst StyledArtifactVersion = styled.div`\n width: 100%;\n position: relative;\n display: flex;\n padding: ${ct(\"padding\")};\n border-radius: ${ct(\"border-radius\")};\n background-color: ${ct(\"background-color\")};\n border: ${ct(\"border-width\")} solid ${ct(\"border-color\")};\n cursor: pointer;\n transition: border-color 0.125s ease-in-out, background 0.125s ease-in-out;\n &.isInherited {\n background-color: ${ct(\"background-color-inherited\")};\n border-color: ${ct(\"border-color-inherited\")};\n }\n &.isSelected {\n background-color: ${ct(\"background-color-selected\")};\n border-color: ${ct(\"border-color-selected\")};\n }\n :hover:not(.isSelected) {\n background-color: ${ct(\"background-color-hover\")};\n }\n :hover:not(.isSelected):not(.isInherited) {\n border-color: ${ct(\"border-color-hover\")};\n }\n`;\n\nconst TextWrapper = styled.div`\n width: 100%;\n display: flex;\n align-items: flex-start;\n justify-content: flex-start;\n flex-direction: column;\n row-gap: 1px;\n overflow: hidden;\n`;\n\nconst NameRow = styled.div`\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n gap: 8px;\n`;\n\nconst SelectedIcon = styled(Icon)`\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n right: 8px;\n`;\n","import styled from \"@emotion/styled\";\nimport { getComponentTokenHelpers } from \"../../../styles\";\nimport type { ReactNode } from \"react\";\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n IconButton,\n} from \"../../atoms\";\n\nconst [containerCT, headerCT, toggledCT] = getComponentTokenHelpers([\n \"collapsible-list-container\",\n \"collapsible-list-header-container\",\n \"collapsible-list-toggled-container\",\n]);\n\nconst Container = styled.div`\n border-radius: ${containerCT(\"border-radius\")};\n border: ${containerCT(\"border-width\")} solid ${containerCT(\"border-color\")};\n display: flex;\n flex-direction: column;\n overflow: hidden;\n position: relative;\n`;\n\nconst HeaderContainer = styled.div`\n align-items: center;\n background-color: ${headerCT(\"background-color\")};\n cursor: pointer;\n display: flex;\n gap: ${headerCT(\"gap\")};\n padding: ${headerCT(\"padding\")};\n\n &[data-state=\"open\"] > .caret-button {\n transform: rotate(90deg);\n }\n\n &[data-state=\"open\"] {\n border-bottom: ${containerCT(\"border-width\")} solid\n ${containerCT(\"border-color\")};\n }\n`;\n\nconst ToggledContainer = styled.div`\n flex-direction: column;\n gap: ${toggledCT(\"gap\")};\n`;\n\ninterface CollapsibleListProps {\n headerContent: ReactNode;\n toggledContent: ReactNode;\n toggleContentColor?: string;\n isOpen?: boolean;\n onOpen?: () => void;\n}\n\nexport const CollapsibleList = ({\n headerContent,\n toggledContent,\n isOpen,\n onOpen,\n}: CollapsibleListProps) => (\n <Collapsible open={isOpen} onOpenChange={onOpen}>\n <Container>\n <CollapsibleTrigger>\n <HeaderContainer>\n <IconButton\n className=\"caret-button\"\n color=\"black\"\n size=\"xsm\"\n iconId=\"CaretRight\"\n />\n {headerContent}\n </HeaderContainer>\n </CollapsibleTrigger>\n <CollapsibleContent>\n <ToggledContainer>{toggledContent}</ToggledContainer>\n </CollapsibleContent>\n </Container>\n </Collapsible>\n);\n","import {\n memo,\n useCallback,\n type ChangeEvent,\n type InputHTMLAttributes,\n} from \"react\";\nimport { IconButton, Input, Tooltip } from \"../../../atoms\";\nimport styled from \"@emotion/styled\";\nimport type { ComboBoxOption } from \"../common/types\";\nimport { getComponentTokenHelpers, getSemanticToken } from \"../../../../styles\";\n\nconst [ct] = getComponentTokenHelpers([\"combobox\"]);\n\ninterface ComboBoxInputProps {\n inputText: string;\n setInputText: (searchText: string) => void;\n onSelectionChange: (\n type: \"create\" | \"select\",\n newSelection: ComboBoxOption | undefined\n ) => void;\n isDeletable: boolean;\n placeholder: string;\n setIsOpen: (open: boolean) => void;\n onKeyDown?: InputHTMLAttributes<HTMLInputElement>[\"onKeyDown\"];\n tooltipText: string;\n}\n\nexport const ComboBoxInput = memo(\n ({\n isDeletable,\n inputText,\n setInputText,\n onSelectionChange,\n placeholder,\n setIsOpen,\n tooltipText,\n onKeyDown,\n }: ComboBoxInputProps) => {\n const onSearchTextChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => {\n setInputText(e.target.value ?? \"\");\n },\n [setInputText]\n );\n\n const handleRemove = useCallback(() => {\n setInputText(\"\");\n onSelectionChange(\"select\", undefined);\n setIsOpen(false);\n }, [onSelectionChange, setInputText, setIsOpen]);\n\n return (\n <SelectedTagWrapper>\n <StyledInput\n value={inputText}\n onChange={onSearchTextChange}\n onKeyDown={onKeyDown}\n placeholder={placeholder}\n autoFocus\n className={isDeletable ? \"isDeletable\" : undefined}\n />\n {isDeletable && (\n <RemoveButtonWrapper>\n <Tooltip variant=\"dark\" content={tooltipText}>\n <IconButton\n onClick={handleRemove}\n iconId=\"DeleteOutlined\"\n color=\"red\"\n size=\"sm\"\n />\n </Tooltip>\n </RemoveButtonWrapper>\n )}\n </SelectedTagWrapper>\n );\n }\n);\n\nconst SelectedTagWrapper = styled.div`\n width: 100%;\n position: relative;\n display: flex;\n`;\n\nconst RemoveButtonWrapper = styled.div`\n position: absolute;\n right: 8px;\n top: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n transform: translateY(-50%);\n`;\n\nconst StyledInput = styled(Input)`\n border-radius: ${ct(\"input-border-radius\")};\n height: ${ct(\"height\")};\n width: 100%;\n\n &.isDeletable {\n padding-right: ${getSemanticToken(\"spacing-32\")};\n }\n`;\n","import { memo } from \"react\";\nimport { Icon, MiddleTruncateText } from \"../../../atoms\";\n\ninterface ComboBoxOptionLabelProps {\n name: string;\n}\n\nexport const ComboBoxOptionLabel = memo(\n ({ name }: ComboBoxOptionLabelProps) => (\n <>\n <Icon\n iconId=\"Check\"\n color=\"black\"\n className=\"option-label-icon\"\n size=\"xsm\"\n />\n <MiddleTruncateText variant=\"body\" color=\"dark\">\n {name}\n </MiddleTruncateText>\n </>\n )\n);\n","import styled from \"@emotion/styled\";\nimport { getComponentTokenHelpers, getSemanticToken } from \"../../../styles\";\nimport {\n useCallback,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type KeyboardEvent,\n} from \"react\";\nimport { Link, Option, Select, useSelectContext } from \"../../atoms\";\nimport type { ComboBoxOption, ComboBoxProps } from \"./common/types\";\nimport { ComboBoxInput } from \"./components/combo-box-input\";\nimport { ComboBoxOptionLabel } from \"./components/combo-box-option-label\";\nimport type { TranslationFunction } from \"../../common/types\";\n\nconst [ct, optionCt] = getComponentTokenHelpers([\"combobox\", \"option\"]);\n\ninterface ComboBoxInnerProps\n extends Pick<\n ComboBoxProps,\n | \"OptionLabelComponent\"\n | \"placeholder\"\n | \"createNode\"\n | \"createText\"\n | \"onEnter\"\n | \"className\"\n > {\n optionsToRender: ComboBoxOption[];\n inputText: string;\n handleSelectionChange: (\n type: \"create\" | \"select\",\n newSelection: ComboBoxOption | undefined\n ) => void;\n handleInputChange: (inputText: string) => void;\n isDeletable: boolean;\n t?: TranslationFunction;\n}\n\nconst ComboBoxInner = ({\n optionsToRender,\n inputText,\n handleSelectionChange,\n handleInputChange,\n isDeletable,\n OptionLabelComponent,\n placeholder,\n createNode,\n createText,\n className,\n onEnter,\n t,\n}: ComboBoxInnerProps) => {\n const { setIsOpen, selectedIndex } = useSelectContext();\n\n const handleCreate = useCallback(() => {\n handleSelectionChange(\"create\", { id: inputText, name: inputText });\n setIsOpen(false);\n }, [inputText, setIsOpen, handleSelectionChange]);\n\n const showCreate = useMemo(\n () =>\n !optionsToRender.length ||\n !optionsToRender.some(\n (option) => option.name.toLowerCase() === inputText.toLowerCase()\n ),\n [inputText, optionsToRender]\n );\n\n const onKeyDown = useCallback(\n (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.code === \"Enter\" && !!inputText && !!onEnter) {\n onEnter(inputText, () => setIsOpen(false));\n }\n },\n [inputText, onEnter, setIsOpen]\n );\n\n return (\n <StyledComboBox className={className}>\n <ComboBoxInput\n inputText={inputText}\n setIsOpen={setIsOpen}\n onSelectionChange={handleSelectionChange}\n setInputText={handleInputChange}\n isDeletable={isDeletable}\n onKeyDown={onEnter ? onKeyDown : undefined}\n placeholder={placeholder ?? \"Enter a name\"}\n tooltipText={t?.(\"comboBox.tooltipText\") ?? \"Remove?\"}\n />\n {optionsToRender.map((option, i) => (\n <StyledSelectOption\n label={\n OptionLabelComponent ? (\n <OptionLabelComponent\n {...option}\n selected={selectedIndex === i}\n />\n ) : (\n <ComboBoxOptionLabel name={option.name} />\n )\n }\n optionKey={option.id}\n key={option.id}\n disabled={option.isHeader}\n />\n ))}\n {showCreate && !!inputText ? (\n createNode ? (\n <CreateNodeWrapper onClick={handleCreate}>\n {createNode}\n </CreateNodeWrapper>\n ) : (\n <CreateLink size=\"med\" onClick={handleCreate}>\n {createText ?? \"Create?\"}\n </CreateLink>\n )\n ) : null}\n </StyledComboBox>\n );\n};\n\nexport const ComboBox = ({\n children,\n deletable,\n options,\n selected,\n onInputChange,\n onSelectionChange,\n requiresSelection,\n ...innerProps\n}: ComboBoxProps) => {\n const selectedRef = useRef(selected?.id);\n const [inputText, setInputText] = useState(\n !requiresSelection ? selected?.name ?? \"\" : \"\"\n );\n\n const isSelectedInInput = !!selected && selected.name === inputText;\n const isDeletable =\n deletable !== undefined\n ? deletable\n : isSelectedInInput && !requiresSelection;\n\n useLayoutEffect(() => {\n // If an outside update to selected happens, keep the input\n // in sync.\n if (selectedRef.current !== selected?.id) {\n setInputText(requiresSelection ? \"\" : selected?.name ?? \"\");\n selectedRef.current = selected?.id;\n }\n }, [selected, requiresSelection]);\n\n const handleInputChange = useCallback(\n (input: string) => {\n setInputText(input);\n\n onInputChange?.(input);\n },\n [onInputChange]\n );\n\n const handleSelectionChange = useCallback(\n (type: \"create\" | \"select\", newSelection: ComboBoxOption | undefined) => {\n selectedRef.current = newSelection?.id;\n setInputText(requiresSelection ? \"\" : newSelection?.name ?? \"\");\n onSelectionChange(type, newSelection?.id);\n },\n [onSelectionChange, requiresSelection]\n );\n\n const handleSelect = useCallback(\n (id) => {\n const newSelection = options.find((option) => option.id === id);\n if (newSelection) {\n handleSelectionChange(\"select\", newSelection);\n }\n },\n [handleSelectionChange, options]\n );\n\n const optionsToRender = useMemo(\n () =>\n isSelectedInInput\n ? options\n : options.filter(\n (option) =>\n option.name.toLowerCase().includes(inputText.toLowerCase()) ||\n option.isHeader\n ),\n [inputText, options, isSelectedInInput]\n );\n\n const selectedIndex = useMemo(\n () => optionsToRender.findIndex((option) => option.id === selected?.id),\n [optionsToRender, selected?.id]\n );\n\n return (\n <StyledSelect\n selectedIndex={selectedIndex}\n isFocusTrapDisabled\n onSelect={handleSelect}\n Reference={children}\n >\n <ComboBoxInner\n {...innerProps}\n handleInputChange={handleInputChange}\n handleSelectionChange={handleSelectionChange}\n optionsToRender={optionsToRender}\n isDeletable={isDeletable}\n inputText={inputText}\n />\n </StyledSelect>\n );\n};\n\nconst StyledSelect = styled(Select)`\n border-radius: ${ct(\"border-radius\")};\n overflow: hidden;\n`;\n\nconst StyledComboBox = styled.div`\n width: 200px;\n height: auto;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: flex-start;\n background-color: ${ct(\"background-color\")};\n border-radius: ${ct(\"border-radius\")};\n box-shadow: ${ct(\"box-shadow\")};\n padding: ${ct(\"padding\")};\n row-gap: ${ct(\"row-gap\")};\n`;\n\nconst CreateLink = styled(Link)`\n padding: ${optionCt(\"padding\")};\n`;\n\nconst CreateNodeWrapper = styled.div`\n cursor: pointer;\n width: 100%;\n`;\n\nconst StyledSelectOption = styled(Option)`\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n background-color: ${ct(\"background-color\")};\n border-radius: ${ct(\"selection-border-radius\")};\n column-gap: ${ct(\"option-column-gap\")};\n transition: background 0.125s ease-in-out;\n overflow: hidden;\n > .option-label-icon {\n display: none;\n }\n &.isSelected {\n background-color: ${ct(\"background-color-selected\")};\n > .option-label-icon {\n display: block;\n }\n }\n &.isActive:not(.isSelected) {\n background-color: ${ct(\"background-color-active\")};\n }\n &.disabled {\n cursor: initial;\n pointer-events: none;\n span {\n font-weight: ${getSemanticToken(\"font-weight-bold\")};\n }\n }\n`;\n\nexport const FakeInputReference = styled.div`\n height: 20px;\n width: 240px;\n display: grid;\n align-items: center;\n grid-template-columns: 1fr 20px;\n border-radius: ${getSemanticToken(\"spacing-2\")};\n padding: ${getSemanticToken(\"spacing-2\")} ${getSemanticToken(\"spacing-6\")};\n grid-gap: ${getSemanticToken(\"spacing-6\")};\n cursor: pointer;\n overflow: hidden;\n border: ${getSemanticToken(\"border-sm\")} solid\n ${getSemanticToken(\"color-grey30\")};\n :hover {\n border-color: ${getSemanticToken(\"color-grey60\")};\n }\n transition: border 0.2s ease-in-out;\n &.isDisabled {\n pointer-events: none;\n background-color: ${getSemanticToken(\"color-grey10\")};\n }\n`;\n","// eslint-disable-next-line no-restricted-imports\nimport {\n UseFormRegister,\n UseFormReturn,\n type FieldValues,\n} from \"react-hook-form\";\nimport { useCallback, useMemo } from \"react\";\n\n// Credit: https://github.com/react-hook-form/react-hook-form/issues/1650#issuecomment-870453248\n\nconst validateNotWhitespaceOnly = <T>(value: T): true | string =>\n typeof value === \"string\" ? value.trim().length > 0 || \"Required\" : true;\n\n/* this hook wraps the return value of react-hook-form's useForm to\nconsider inputs that only contain whitespaces as empty, in the case where\nthe input validation is set to \"required\".\n */\nexport const useWrapFormToConsiderWhitespacesAsEmpty = <\n T extends FieldValues = FieldValues\n>(\n formMethods: UseFormReturn<T>\n): UseFormReturn<T> => {\n const { register } = formMethods;\n const wrappedRegister: UseFormRegister<T> = useCallback(\n (name, options) => {\n // we only need to inject the whitespace validation if options.required = true\n if (!options || !options.required) return register(name, options);\n\n // inject whitespace validation into the rules\n const originalValidationRules =\n typeof options.validate === \"function\"\n ? { default: options.validate }\n : options.validate;\n\n const wrappedOptions = {\n ...options,\n validate: {\n ...originalValidationRules,\n whitespaces: validateNotWhitespaceOnly,\n },\n };\n return register(name, wrappedOptions);\n },\n [register]\n );\n\n // register is inside control too, we need to add our wrapped version there in\n // order to make sure Controller and useController work correctly. Avoid to create\n // a new object every time by using useMemo\n const control = useMemo(() => {\n return {\n ...formMethods.control,\n register: wrappedRegister,\n };\n }, [formMethods.control, wrappedRegister]);\n\n return {\n ...formMethods,\n register: wrappedRegister,\n control,\n };\n};\n","import { useCallback, useEffect, type ReactNode } from \"react\";\n// eslint-disable-next-line no-restricted-imports\nimport {\n FormProvider,\n useForm,\n type DefaultValues,\n type FieldValues,\n type SubmitHandler as _SubmitHandler,\n type UseFormProps,\n type FieldError,\n} from \"react-hook-form\";\nimport type { SubmitHandler } from \"./common\";\nimport { useWrapFormToConsiderWhitespacesAsEmpty } from \"./hooks/useWrapFormForWhiteSpaceValidation\";\n\nexport interface FormProps<T extends FieldValues = FieldValues>\n extends Pick<\n UseFormProps<T>,\n \"mode\" | \"disabled\" | \"reValidateMode\" | \"criteriaMode\" | \"delayError\"\n > {\n children: ReactNode;\n onSubmit: SubmitHandler<T>;\n defaultValues: DefaultValues<T>;\n className?: string;\n variant?: \"blur\" | \"submit\";\n onRootErrorChange?: (error?: FieldError) => void;\n}\n\nexport function Form<T extends FieldValues = FieldValues>({\n children,\n onSubmit,\n onRootErrorChange,\n className,\n defaultValues,\n variant = \"submit\",\n ...formOptions\n}: FormProps<T>) {\n const unwrappedForm = useForm<T>({\n shouldUnregister: true,\n defaultValues,\n ...formOptions,\n mode: variant === \"blur\" ? \"onBlur\" : formOptions.mode,\n });\n\n const form = useWrapFormToConsiderWhitespacesAsEmpty(unwrappedForm);\n\n const rootError = form.formState.errors.root;\n\n useEffect(() => {\n if (onRootErrorChange) {\n onRootErrorChange(rootError as FieldError | undefined);\n }\n }, [rootError, onRootErrorChange]);\n\n const _onSubmit: _SubmitHandler<T> = useCallback(\n async (data) => {\n await onSubmit(data, form.setError);\n },\n [form.setError, onSubmit]\n );\n\n return (\n <FormProvider {...form}>\n <form\n className={className}\n onSubmit={variant === \"blur\" ? undefined : form.handleSubmit(_onSubmit)}\n onBlur={variant === \"blur\" ? form.handleSubmit(_onSubmit) : undefined}\n >\n {children}\n </form>\n </FormProvider>\n );\n}\n","import styled from \"@emotion/styled\";\nimport { ReactNode, memo } from \"react\";\nimport { Icon, Text } from \"../../atoms\";\nimport type { TranslationFunction } from \"../../common/types\";\n\nconst Bullet = memo(() => (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M5.99961 3.6001C5.35761 3.6001 4.75761 3.8481 4.30361 4.3041C3.84961 4.7581 3.59961 5.3581 3.59961 6.0001C3.59961 6.6421 3.84961 7.2421 4.30361 7.6961C4.75761 8.1481 5.35961 8.4001 5.99961 8.4001C6.63961 8.4001 7.24161 8.1501 7.69561 7.6961C8.14761 7.2421 8.39961 6.6401 8.39961 6.0001C8.39961 5.3601 8.14961 4.7581 7.69561 4.3041C7.24161 3.8481 6.64161 3.6001 5.99961 3.6001Z\"\n fill=\"#262626\"\n />\n </svg>\n));\n\nconst getBullet = (isValid?: boolean) => {\n if (isValid === undefined) {\n return <Bullet />;\n }\n if (isValid) {\n return <Icon iconId=\"Check\" color=\"green\" size=\"sm\" />;\n }\n return <Icon iconId=\"Close\" color=\"red\" size=\"sm\" />;\n};\n\nexport interface RequirementsListProps {\n isBlank: boolean;\n t?: TranslationFunction;\n title?: string;\n requirements: {\n textKey: string;\n id: string | number;\n }[];\n className?: string;\n metRequirements: (string | number)[];\n bulletGetter?: (value: string | number, isMet?: boolean) => ReactNode;\n}\n\nexport const RequirementsList = memo(\n ({\n isBlank,\n requirements,\n metRequirements,\n bulletGetter,\n className,\n t,\n title,\n }: RequirementsListProps) => (\n <RequirementsListWrapper className={className}>\n {!!title && (\n <Text color=\"dark\" bold variant=\"body\">\n {title}\n </Text>\n )}\n <StyledRequirementsList>\n {requirements.map((requirement) => {\n const isMet = isBlank\n ? undefined\n : metRequirements.includes(requirement.id);\n return (\n <StyledListItem key={requirement.id}>\n {bulletGetter\n ? bulletGetter(requirement.id, isMet)\n : getBullet(isMet)}\n <StyledListItemText variant=\"body\" color=\"dark\">\n {t ? t(requirement.textKey) : requirement.id}\n </StyledListItemText>\n </StyledListItem>\n );\n })}\n </StyledRequirementsList>\n </RequirementsListWrapper>\n )\n);\n\nconst RequirementsListWrapper = styled.div`\n display: flex;\n align-items: flex-start;\n justify-content: flex-start;\n flex-direction: column;\n`;\n\nconst StyledRequirementsList = styled.ul`\n margin: 0px;\n padding-left: 0px;\n row-gap: 4px;\n list-style-type: none;\n list-style-position: inside;\n`;\n\nconst StyledListItem = styled.li`\n margin: 0;\n align-items: center;\n display: flex;\n justify-content: flex-start;\n`;\n\nconst StyledListItemText = styled(Text<\"body\">)`\n margin-left: 4px;\n`;\n","// eslint-disable-next-line no-restricted-imports\nimport {\n useFormContext as _useFormContext,\n type FieldValues,\n} from \"react-hook-form\";\n\nexport const useFormContext = <T extends FieldValues = FieldValues>() =>\n _useFormContext<T>();\n","import { ClassNames } from \"@emotion/react\";\nimport styled from \"@emotion/styled\";\nimport { getComponentTokenHelpers } from \"../../../../styles\";\nimport type { TranslationFunction } from \"../../../common/types\";\nimport { memo, useMemo } from \"react\";\nimport { PasswordRequirementKeys } from \"../../../../helpers\";\nimport {\n RequirementsList,\n type RequirementsListProps,\n} from \"../../requirements-list\";\nimport { useFormContext } from \"../common/hooks/use-form-context\";\n\nconst [ct] = getComponentTokenHelpers([\"form\"]);\n\nexport const PASSWORD_REQUIREMENTS: RequirementsListProps[\"requirements\"] = [\n {\n textKey: \"passwordRequirements.length\",\n id: \"length\",\n },\n {\n textKey: \"passwordRequirements.uppercaseAndNumber\",\n id: \"uppercaseAndNumber\",\n },\n {\n textKey: \"passwordRequirements.specialCharacter\",\n id: \"specialCharacter\",\n },\n];\n\nexport const PASSWORD_REQUIREMENTS_TOO_SIMILAR: RequirementsListProps[\"requirements\"] =\n [\n {\n textKey: \"passwordRequirements.tooSimilar\",\n id: \"tooSimilar\",\n },\n ...PASSWORD_REQUIREMENTS,\n ];\n\nexport interface PasswordRequirementsListProps {\n name?: string;\n hasLabel?: boolean;\n includeTooSimilar?: boolean;\n t?: TranslationFunction;\n}\n\nexport const PasswordRequirementsList = memo(\n ({ name, t, hasLabel, includeTooSimilar }: PasswordRequirementsListProps) => {\n const { getFieldState, formState } = useFormContext();\n\n const { error, isDirty } = getFieldState(name ?? \"password\", formState);\n\n const metRequirements = useMemo(() => {\n const errorObj = error?.types ?? {};\n\n const met: string[] = [];\n\n if (!errorObj[\"minLength\"] && !errorObj[\"required\"]) met.push(\"length\");\n\n if (!errorObj[\"tooSimilar\"] && includeTooSimilar) met.push(\"tooSimilar\");\n\n if (\n !errorObj[PasswordRequirementKeys.noDigit] &&\n !errorObj[PasswordRequirementKeys.noUpperCase]\n ) {\n met.push(\"uppercaseAndNumber\");\n }\n\n if (!errorObj[PasswordRequirementKeys.noSpecialCharacter]) {\n met.push(\"specialCharacter\");\n }\n\n return met;\n }, [error?.types, includeTooSimilar]);\n\n return (\n <ClassNames>\n {({ cx }) => (\n <StyledRequirementsList\n t={t}\n className={cx({ hasLabel })}\n isBlank={!isDirty && !error}\n requirements={\n includeTooSimilar\n ? PASSWORD_REQUIREMENTS_TOO_SIMILAR\n : PASSWORD_REQUIREMENTS\n }\n title={t?.(\"passwordRequirements.title\") ?? \"Password Requirements\"}\n metRequirements={metRequirements}\n />\n )}\n </ClassNames>\n );\n }\n);\n\nconst StyledRequirementsList = styled(RequirementsList)`\n width: 100%;\n align-items: flex-start;\n justify-content: flex-start;\n &.hasLabel {\n padding-left: calc(${ct(\"label-width\")} + ${ct(\"label-column-gap\")});\n }\n`;\n","import { forwardRef, type HTMLAttributes } from \"react\";\nimport styled from \"@emotion/styled\";\nimport { ClassNames } from \"@emotion/react\";\nimport { getComponentTokenHelpers } from \"../../../../../styles\";\n\nconst [ct] = getComponentTokenHelpers([\"form\"]);\n\ninterface FormLabelProps extends HTMLAttributes<HTMLLabelElement> {\n required?: boolean;\n formItemId: string;\n isValid: boolean;\n}\n\nexport const FormLabel = forwardRef<HTMLLabelElement, FormLabelProps>(\n ({ className, required, formItemId, isValid, ...props }, ref) => (\n <ClassNames>\n {({ cx }) => (\n <StyledLabel\n ref={ref}\n aria-required={required}\n aria-invalid={!isValid}\n className={cx(className, \"form-label\")}\n htmlFor={formItemId}\n {...props}\n />\n )}\n </ClassNames>\n )\n);\n\nconst StyledLabel = styled.label`\n font-family: ${ct(\"label-font-family\")};\n font-size: ${ct(\"label-font-size\")};\n font-weight: ${ct(\"label-font-weight\")};\n height: ${ct(\"label-height\")};\n line-height: ${ct(\"label-line-height\")};\n text-align: right;\n width: 100%;\n &[aria-required=\"true\"] {\n ::before {\n content: \"*\";\n padding-right: ${ct(\"label-star-padding\")};\n color: ${ct(\"label-error-color\")};\n }\n }\n`;\n\nFormLabel.displayName = \"FormLabel\";\n","import { memo } from \"react\";\nimport type { HandleFormError } from \"../types\";\n// eslint-disable-next-line no-restricted-imports\nimport { useFormContext } from \"react-hook-form\";\nimport { Text } from \"../../../../atoms\";\nimport styled from \"@emotion/styled\";\nimport { getComponentTokenHelpers } from \"../../../../../styles\";\n\nconst [ct] = getComponentTokenHelpers([\"form\"]);\n\ninterface FormErrorMessageProps {\n handleError: HandleFormError;\n name: string;\n hasLabel?: boolean;\n}\n\nexport const FormErrorMessage = memo(\n ({ handleError, name, hasLabel }: FormErrorMessageProps) => {\n const { getFieldState, formState } = useFormContext();\n\n const { error } = getFieldState(name, formState);\n\n if (!error) return null;\n\n const errorMessage =\n handleError === \"message\" ? error.message : handleError(error);\n\n if (!errorMessage) {\n return null;\n }\n\n return (\n <StyledFormErrorMessage\n className={hasLabel ? \"hasLabel\" : undefined}\n variant=\"body\"\n color=\"red\"\n >\n {errorMessage}\n </StyledFormErrorMessage>\n );\n }\n);\n\nconst StyledFormErrorMessage = styled(Text<\"body\">)`\n width: 100%;\n margin-top: ${ct(\"error-message-top-margin\")};\n &.hasLabel {\n padding-left: calc(${ct(\"label-width\")} + ${ct(\"label-column-gap\")});\n }\n`;\n","import styled from \"@emotion/styled\";\nimport { getComponentTokenHelpers } from \"../../../../styles\";\n\nconst [ct] = getComponentTokenHelpers([\"form\"]);\n\nexport const FormFieldWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: flex-start;\n flex-direction: column;\n width: 100%;\n position: relative;\n`;\n\nexport const FormInputWrapper = styled.div`\n display: grid;\n align-items: center;\n grid-template-columns: 1fr;\n width: 100%;\n column-gap: ${ct(\"label-column-gap\")};\n &.hasLabel {\n grid-template-columns: ${ct(\"label-width\")} 1fr;\n }\n`;\n\nexport const FormInputAreaWrapper = styled(FormInputWrapper)`\n align-items: flex-start;\n\n /*\n Note: To have a form field area label alignment match with standard form\n fields, padding can be added to accommodate the label positioning, however;\n this may not be desirable in every case. There are design instructions to\n have area fields align at flex-start, but if that ever changes, this code\n can help...\n\n & label {\n padding: ${ct(\"label-area-padding\")};\n } */\n`;\n\nexport const HiddenFormInput = styled.input`\n visibility: hidden;\n position: absolute;\n right: 0;\n top: 0;\n pointer-events: none;\n`;\n","import { useId } from \"react\";\n// eslint-disable-next-line no-restricted-imports\nimport {\n useController,\n useFormContext,\n type FieldPath,\n type FieldValues,\n} from \"react-hook-form\";\nimport { Toggle, type ToggleProps } from \"../../../atoms\";\nimport { FormLabel } from \"../common/components/form-label\";\nimport { ClassNames } from \"@emotion/react\";\nimport { FormErrorMessage } from \"../common/components/form-error-message\";\nimport { FormFieldWrapper, FormInputWrapper } from \"../common/form.styles\";\nimport type { BaseFormFieldProps } from \"../common/types\";\nimport styled from \"@emotion/styled\";\n\nexport type FormToggleProps<\n T extends FieldValues = FieldValues,\n N extends FieldPath<T> = FieldPath<T>\n> = BaseFormFieldProps<T, N> &\n Pick<ToggleProps, \"showIcons\"> & {\n className?: string;\n };\n\nexport const FormToggle = <\n T extends FieldValues = FieldValues,\n N extends FieldPath<T> = FieldPath<T>\n>({\n name,\n disabled,\n label,\n className,\n handleError,\n showIcons,\n readOnly,\n ...controlOptions\n}: FormToggleProps<T, N>) => {\n const { control } = useFormContext<T>();\n\n const {\n field: { onChange, value, disabled: fieldDisabled },\n fieldState: { error },\n } = useController({ name, control, rules: controlOptions, disabled });\n\n const id = useId();\n\n return (\n <ClassNames>\n {({ cx }) => (\n <FormFieldWrapper>\n <FormInputWrapper className={cx({ hasLabel: !!label })}>\n {label && (\n <FormLabel\n formItemId={id}\n isValid={!error}\n required={!!controlOptions.required}\n >\n {label}\n </FormLabel>\n )}\n <ToggleWrapper>\n <Toggle\n checked={value}\n disabled={fieldDisabled}\n readOnly={readOnly}\n onChange={onChange}\n showIcons={showIcons}\n id={id}\n />\n </ToggleWrapper>\n </FormInputWrapper>\n {!!handleError && (\n <FormErrorMessage\n handleError={handleError}\n name={name}\n hasLabel={!!label}\n />\n )}\n </FormFieldWrapper>\n )}\n </ClassNames>\n );\n};\n\nconst ToggleWrapper = styled.div`\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n`;\n","import { useId, type ForwardedRef, type TextareaHTMLAttributes } from \"react\";\n// eslint-disable-next-line no-restricted-imports\nimport {\n useController,\n useFormContext,\n type FieldPath,\n type FieldValues,\n} from \"react-hook-form\";\nimport { Textarea } from \"../../../atoms\";\nimport { useMergeRefs } from \"@floating-ui/react\";\nimport { FormLabel } from \"../common/components/form-label\";\nimport { ClassNames } from \"@emotion/react\";\nimport { FormErrorMessage } from \"../common/components/form-error-message\";\nimport { forwardRefWithGeneric } from \"../../../utility/forward-ref-with-generic\";\nimport { FormFieldWrapper, FormInputAreaWrapper } from \"../common/form.styles\";\nimport type { BaseFormFieldProps } from \"../common/types\";\n\nexport type FormTextAreaProps<\n T extends FieldValues = FieldValues,\n N extends FieldPath<T> = FieldPath<T>\n> = BaseFormFieldProps<T, N> &\n Pick<\n TextareaHTMLAttributes<HTMLTextAreaElement>,\n \"className\" | \"autoFocus\" | \"placeholder\" | \"wrap\"\n >;\n\nconst _FormTextArea = <\n T extends FieldValues = FieldValues,\n N extends FieldPath<T> = FieldPath<T>\n>(\n {\n name,\n disabled,\n label,\n placeholder,\n className,\n handleError,\n autoFocus,\n wrap,\n readOnly,\n ...controlOptions\n }: FormTextAreaProps<T, N>,\n ref: ForwardedRef<HTMLTextAreaElement>\n) => {\n const { control } = useFormContext<T>();\n\n const {\n field: { ref: fieldRef, ...field },\n fieldState: { error },\n } = useController({ name, control, rules: controlOptions, disabled });\n\n const id = useId();\n\n const formInputRef = useMergeRefs([fieldRef, ref]);\n\n return (\n <ClassNames>\n {({ cx }) => (\n <FormFieldWrapper>\n <FormInputAreaWrapper className={cx({ hasLabel: !!label })}>\n {label && (\n <FormLabel\n formItemId={id}\n isValid={!error}\n required={!!controlOptions.required}\n >\n {label}\n </FormLabel>\n )}\n <Textarea\n {...field}\n id={id}\n placeholder={placeholder}\n ref={formInputRef}\n autoComplete=\"off\"\n className={cx(className, \"form-text-area\")}\n aria-invalid={!!error}\n autoFocus={autoFocus}\n readOnly={readOnly}\n wrap={wrap}\n />\n </FormInputAreaWrapper>\n {!!handleError && (\n <FormErrorMessage\n handleError={handleError}\n name={name}\n hasLabel={!!label}\n />\n )}\n </FormFieldWrapper>\n )}\n </ClassNames>\n );\n};\n\nexport const FormTextArea = forwardRefWithGeneric(_FormTextArea);\n","import { useCallback, type ForwardedRef } from \"react\";\nimport { Button, type ButtonProps } from \"../../../atoms/button/button\";\n// eslint-disable-next-line no-restricted-imports\nimport {\n useFormContext,\n type FieldValues,\n type SubmitHandler as _SubmitHandler,\n} from \"react-hook-form\";\nimport { forwardRefWithGeneric } from \"../../../utility/forward-ref-with-generic\";\nimport { type SubmitHandler } from \"../common\";\n\ninterface FormSubmitProps<T extends FieldValues = FieldValues>\n extends Omit<ButtonProps, \"type\" | \"onSubmit\"> {\n onSubmit: SubmitHandler<T>;\n enabledIfClean?: boolean;\n}\n\nconst _FormSubmit = <T extends FieldValues = FieldValues>(\n { onSubmit, enabledIfClean, disabled, ...buttonProps }: FormSubmitProps<T>,\n ref: ForwardedRef<HTMLButtonElement>\n) => {\n const {\n handleSubmit,\n setError,\n formState: { isValid, isSubmitting, dirtyFields },\n } = useFormContext<T>();\n\n const _onSubmit: _SubmitHandler<T> = useCallback(\n async (data) => {\n await onSubmit(data, setError);\n },\n [setError, onSubmit]\n );\n\n const isDirty = Object.keys(dirtyFields).length > 0;\n\n const _disabled =\n !isValid || isSubmitting || (!enabledIfClean && !isDirty) || disabled;\n\n return (\n <Button\n type=\"submit\"\n {...buttonProps}\n ref={ref}\n disabled={_disabled}\n onClick={handleSubmit(_onSubmit)}\n />\n );\n};\n\nexport const FormSubmit = forwardRefWithGeneric(_FormSubmit);\n","import {\n Children,\n isValidElement,\n useCallback,\n useEffect,\n useRef,\n useState,\n type InputHTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport {\n Input,\n Select,\n type IconColors,\n type IconIds,\n type SelectProps,\n} from \"../../atoms\";\nimport { ClassNames } from \"@emotion/react\";\nimport styled from \"@emotion/styled\";\nimport { noop } from \"../../../helpers\";\n\ninterface DropdownProps {\n children: ReactNode;\n value: string | number | undefined;\n onSelect: SelectProps[\"onSelect\"];\n disabled?: boolean;\n placeholder?: string;\n id?: string;\n prefixIcon?: IconIds;\n isSmall?: boolean;\n prefixIconColor?: IconColors;\n className?: string;\n onSearch?: (search: string) => void;\n onKeyDown?: InputHTMLAttributes<HTMLInputElement>[\"onKeyDown\"];\n getLabel?: (value: string | number | undefined) => string | undefined;\n getIcon?: (value: string | number | undefined) => IconIds | undefined;\n}\n\nexport const Dropdown = ({\n disabled,\n isSmall,\n children,\n value,\n id,\n placeholder,\n prefixIcon,\n prefixIconColor,\n className,\n getLabel,\n getIcon,\n onSelect,\n onKeyDown,\n}: DropdownProps) => {\n const valueRef = useRef(value);\n\n useEffect(() => {\n valueRef.current = value;\n }, [value]);\n\n const getReferenceDisplayProps = useCallback(\n (\n reference: string | number | undefined\n ): { label: string; iconId?: IconIds } | undefined => {\n let iconId: IconIds | undefined = getIcon?.(reference);\n let label: string | undefined = getLabel?.(reference);\n\n let option: ReactNode | undefined;\n\n if (reference) {\n Children.forEach(children, (child) => {\n if (\n isValidElement(child) &&\n child.props[\"optionKey\"] &&\n child.props.optionKey === reference\n ) {\n option = child;\n }\n });\n }\n\n if (\n option !== undefined &&\n isValidElement(option) &&\n option.props.label\n ) {\n label = label ?? option.props.label;\n iconId = iconId ?? option.props.prefixIconId;\n }\n\n return { label: label ?? \"\", iconId };\n },\n [children, getIcon, getLabel]\n );\n\n const selectIndexBasedOnValue = useCallback(\n (_children: ReactNode, _value: string | number | undefined) => {\n let selected: number | null = null;\n Children.forEach(_children, (child, i) => {\n if (\n isValidElement(child) &&\n child.props[\"optionKey\"] &&\n child.props.optionKey === _value\n ) {\n selected = i;\n }\n });\n return selected;\n },\n []\n );\n\n const [selectedIndex, setSelectedIndex] = useState<number | null>(\n selectIndexBasedOnValue(children, value)\n );\n\n useEffect(() => {\n setSelectedIndex(selectIndexBasedOnValue(children, valueRef.current));\n }, [children, selectIndexBasedOnValue]);\n\n const [inputLabel, setInputLabel] = useState<string | undefined>(\n getReferenceDisplayProps(value)?.label\n );\n\n const [inputIcon, setInputIcon] = useState<IconIds | undefined>(\n getReferenceDisplayProps(value)?.iconId\n );\n\n useEffect(() => {\n const referenceProps = getReferenceDisplayProps(value);\n\n setInputLabel(referenceProps?.label);\n setInputIcon(referenceProps?.iconId);\n }, [value, getReferenceDisplayProps]);\n\n return (\n <ClassNames>\n {({ cx }) => (\n <Select\n onSelect={onSelect}\n disabled={disabled}\n matchReferenceWidth\n selectedIndex={selectedIndex}\n onSelectedIndexChange={setSelectedIndex}\n Reference={\n <DropdownInput\n value={inputLabel ?? \"\"}\n disabled={disabled}\n onChange={noop}\n id={id}\n onKeyDown={onKeyDown}\n isSmall={isSmall}\n prefixIconId={prefixIcon ? prefixIcon : inputIcon}\n prefixIconColor={prefixIconColor}\n type=\"text\"\n placeholder={placeholder}\n autoComplete=\"off\"\n className={cx(className, \"form-input\")}\n suffixIconId=\"Down\"\n suffixIconColor={disabled ? \"grey\" : \"black\"}\n />\n }\n >\n {children}\n </Select>\n )}\n </ClassNames>\n );\n};\n\nconst DropdownInput = styled(Input)`\n caret-color: transparent;\n user-select: none;\n -webkit-user-select: none;\n`;\n","import { useCallback, useId } from \"react\";\n// eslint-disable-next-line no-restricted-imports\nimport {\n useController,\n useFormContext,\n type FieldPath,\n type FieldValues,\n} from \"react-hook-form\";\nimport {\n type IconColors,\n type IconIds,\n type SelectProps,\n} from \"../../../atoms\";\nimport { FormLabel } from \"../common/components/form-label\";\nimport { ClassNames } from \"@emotion/react\";\nimport { FormErrorMessage } from \"../common/components/form-error-message\";\nimport {\n FormFieldWrapper,\n FormInputWrapper,\n HiddenFormInput,\n} from \"../common/form.styles\";\nimport type { BaseFormFieldProps } from \"../common/types\";\nimport { Dropdown } from \"../../drop-down\";\n\nexport type FormSelectProps<\n T extends FieldValues = FieldValues,\n N extends FieldPath<T> = FieldPath<T>\n> = BaseFormFieldProps<T, N> &\n Omit<SelectProps, \"disabled\" | \"Reference\" | \"onSelect\"> & {\n placeholder?: string;\n className?: string;\n prefixIcon?: IconIds;\n prefixIconColor?: IconColors;\n };\n\nexport const FormSelect = <\n T extends FieldValues = FieldValues,\n N extends FieldPath<T> = FieldPath<T>\n>({\n name,\n disabled,\n label,\n handleError,\n children,\n placeholder,\n prefixIcon,\n prefixIconColor,\n className,\n readOnly,\n ...controlOptions\n}: FormSelectProps<T, N>) => {\n const { control } = useFormContext<T>();\n\n const {\n field: { ref: fieldRef, ...field },\n fieldState: { error },\n } = useController({ name, control, rules: controlOptions, disabled });\n\n const id = useId();\n\n const { onChange } = field;\n\n const onSelect: SelectProps[\"onSelect\"] = useCallback(\n (actionId: string) => {\n onChange(actionId);\n },\n [onChange]\n );\n\n return (\n <ClassNames>\n {({ cx }) => (\n <FormFieldWrapper>\n <FormInputWrapper className={cx({ hasLabel: !!label })}>\n {label && (\n <FormLabel\n formItemId={id}\n isValid={!error}\n required={!!controlOptions.required}\n >\n {label}\n </FormLabel>\n )}\n <Dropdown\n disabled={disabled || readOnly}\n onSelect={onSelect}\n className={className}\n id={id}\n value={field.value}\n >\n {children}\n </Dropdown>\n </FormInputWrapper>\n {!!handleError && (\n <FormErrorMessage\n handleError={handleError}\n name={name}\n hasLabel={!!label}\n />\n )}\n <HiddenFormInput ref={fieldRef} {...field} />\n </FormFieldWrapper>\n )}\n </ClassNames>\n );\n};\n","import { useId, type ForwardedRef } from \"react\";\nimport { ClassNames } from \"@emotion/react\";\nimport { useMergeRefs } from \"@floating-ui/react\";\n// eslint-disable-next-line no-restricted-imports\nimport {\n useController,\n useFormContext,\n type FieldPath,\n type FieldValues,\n} from \"react-hook-form\";\nimport { Input, type InputProps } from \"../../../atoms\";\nimport { forwardRefWithGeneric } from \"../../../utility/forward-ref-with-generic\";\nimport { FormErrorMessage } from \"../common/components/form-error-message\";\nimport { FormLabel } from \"../common/components/form-label\";\nimport { FormFieldWrapper, FormInputWrapper } from \"../common/form.styles\";\nimport type { BaseFormFieldProps } from \"../common/types\";\n\nexport type FormInputProps<\n T extends FieldValues = FieldValues,\n N extends FieldPath<T> = FieldPath<T>\n> = BaseFormFieldProps<T, N> &\n Pick<\n InputProps,\n | \"type\"\n | \"className\"\n | \"placeholder\"\n | \"prefixIconId\"\n | \"prefixIconColor\"\n | \"suffixIconColor\"\n | \"suffixIconId\"\n | \"autoFocus\"\n > & { autoTrim?: boolean };\n\nconst _FormInput = <\n T extends FieldValues = FieldValues,\n N extends FieldPath<T> = FieldPath<T>\n>(\n {\n name,\n disabled,\n label,\n placeholder,\n type,\n className,\n handleError,\n prefixIconId,\n prefixIconColor,\n suffixIconColor,\n suffixIconId,\n autoFocus,\n readOnly,\n ...controlOptions\n }: FormInputProps<T, N>,\n ref: ForwardedRef<HTMLInputElement>\n) => {\n const { control } = useFormContext<T>();\n\n const {\n field: { ref: fieldRef, ...field },\n fieldState: { error },\n } = useController({ name, control, rules: controlOptions, disabled });\n\n const id = useId();\n\n const formInputRef = useMergeRefs([fieldRef, ref]);\n\n return (\n <ClassNames>\n {({ cx }) => (\n <FormFieldWrapper>\n <FormInputWrapper className={cx({ hasLabel: !!label })}>\n {label && (\n <FormLabel\n formItemId={id}\n isValid={!error}\n required={!!controlOptions.required}\n >\n {label}\n </FormLabel>\n )}\n <Input\n {...field}\n onChange={(e) => {\n if (controlOptions.autoTrim) {\n field.onChange(e.target.value.trim());\n } else {\n field.onChange(e.target.value);\n }\n }}\n id={id}\n readOnly={readOnly}\n type={type}\n autoFocus={autoFocus}\n placeholder={placeholder}\n ref={formInputRef}\n autoComplete=\"off\"\n prefixIconColor={prefixIconColor}\n prefixIconId={prefixIconId}\n suffixIconId={suffixIconId}\n suffixIconColor={suffixIconColor}\n className={cx(className, \"form-input\")}\n aria-invalid={!!error}\n />\n </FormInputWrapper>\n {!!handleError && (\n <FormErrorMessage\n handleError={handleError}\n name={name}\n hasLabel={!!label}\n />\n )}\n </FormFieldWrapper>\n )}\n </ClassNames>\n );\n};\n\nexport const FormInput = forwardRefWithGeneric(_FormInput);\n","import styled from \"@emotion/styled\";\nimport { useId, type ReactNode } from \"react\";\n// eslint-disable-next-line no-restricted-imports\nimport {\n useController,\n useFormContext,\n type ControllerFieldState,\n type ControllerRenderProps,\n type FieldPath,\n type FieldValues,\n} from \"react-hook-form\";\n\nimport { FormLabel } from \"../common/components/form-label\";\nimport { ClassNames } from \"@emotion/react\";\nimport { FormErrorMessage } from \"../common/components/form-error-message\";\nimport {\n FormFieldWrapper,\n FormInputAreaWrapper,\n FormInputWrapper,\n} from \"../common/form.styles\";\nimport type { BaseFormFieldProps } from \"../common/types\";\n\nexport type FormFieldProps<\n T extends FieldValues = FieldValues,\n N extends FieldPath<T> = FieldPath<T>\n> = BaseFormFieldProps<T, N> & {\n areaField?: boolean;\n children: (\n field: ControllerRenderProps<T, N>,\n state: ControllerFieldState & { readOnly?: boolean }\n ) => ReactNode;\n className?: string;\n};\n\nexport const FormField = <\n T extends FieldValues = FieldValues,\n N extends FieldPath<T> = FieldPath<T>\n>({\n areaField,\n name,\n disabled,\n readOnly,\n label,\n handleError,\n children,\n className,\n ...controlOptions\n}: FormFieldProps<T, N>) => {\n const { control } = useFormContext<T>();\n\n const {\n field,\n fieldState: { error, ...state },\n } = useController<T, N>({\n name,\n control,\n rules: controlOptions,\n disabled,\n });\n\n const id = useId();\n\n const FormInputContainer = areaField\n ? FormInputAreaWrapper\n : FormInputWrapper;\n\n return (\n <ClassNames>\n {({ cx }) => (\n <FormFieldWrapper className={className}>\n <FormInputContainer\n className={cx(\"form-input-wrapper\", { hasLabel: !!label })}\n >\n {label && (\n <FormLabel\n formItemId={id}\n isValid={!error}\n required={!!controlOptions.required}\n >\n {label}\n </FormLabel>\n )}\n {children(field, { error, readOnly, ...state })}\n </FormInputContainer>\n {!!handleError && (\n <FormErrorMessage\n handleError={handleError}\n name={name}\n hasLabel={!!label}\n />\n )}\n </FormFieldWrapper>\n )}\n </ClassNames>\n );\n};\n","import { useCallback, useId, type ChangeEvent, type ForwardedRef } from \"react\";\n// eslint-disable-next-line no-restricted-imports\nimport {\n useController,\n useFormContext,\n type FieldPath,\n type FieldValues,\n} from \"react-hook-form\";\nimport { CheckBox } from \"../../../atoms\";\nimport { useMergeRefs } from \"@floating-ui/react\";\nimport { FormLabel } from \"../common/components/form-label\";\nimport { ClassNames } from \"@emotion/react\";\nimport { FormErrorMessage } from \"../common/components/form-error-message\";\nimport { forwardRefWithGeneric } from \"../../../utility/forward-ref-with-generic\";\nimport { FormFieldWrapper, FormInputWrapper } from \"../common/form.styles\";\nimport type { BaseFormFieldProps } from \"../common/types\";\n\nexport type FormCheckProps<\n T extends FieldValues = FieldValues,\n N extends FieldPath<T> = FieldPath<T>\n> = BaseFormFieldProps<T, N> & { className?: string };\n\nconst _FormCheckbox = <\n T extends FieldValues = FieldValues,\n N extends FieldPath<T> = FieldPath<T>\n>(\n {\n name,\n disabled,\n label,\n className,\n handleError,\n readOnly,\n ...controlOptions\n }: FormCheckProps<T, N>,\n ref: ForwardedRef<HTMLInputElement>\n) => {\n const { control } = useFormContext<T>();\n\n const {\n field: { ref: fieldRef, ...field },\n fieldState: { error },\n } = useController({ name, control, rules: controlOptions, disabled });\n\n const id = useId();\n\n const formCheckRef = useMergeRefs([fieldRef, ref]);\n\n const onChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => {\n e.target.blur();\n field.onChange(e);\n },\n [field]\n );\n\n return (\n <ClassNames>\n {({ cx }) => (\n <FormFieldWrapper>\n <FormInputWrapper className={cx({ hasLabel: !!label })}>\n {label && (\n <FormLabel\n formItemId={id}\n isValid={!error}\n required={!!controlOptions.required}\n >\n {label}\n </FormLabel>\n )}\n <CheckBox\n checked={!!field.value}\n disabled={field.disabled || readOnly}\n onChange={onChange}\n id={id}\n ref={formCheckRef}\n className={cx(className, \"form-checkbox\")}\n aria-invalid={!!error}\n />\n </FormInputWrapper>\n {!!handleError && (\n <FormErrorMessage\n handleError={handleError}\n name={name}\n hasLabel={!!label}\n />\n )}\n </FormFieldWrapper>\n )}\n </ClassNames>\n );\n};\n\nexport const FormCheckbox = forwardRefWithGeneric(_FormCheckbox);\n","import styled from \"@emotion/styled\";\nimport { getComponentTokenHelpers, getSemanticToken } from \"../../../../styles\";\nimport type { TranslationFunction } from \"../../../common/types\";\nimport { useId } from \"react\";\n// eslint-disable-next-line no-restricted-imports\nimport {\n useController,\n useFormContext,\n type Control,\n type FieldPath,\n type FieldValues,\n} from \"react-hook-form\";\nimport { Text, Toggle } from \"../../../atoms\";\nimport { FormLabel } from \"../common\";\n\ninterface FormAccessFieldValues extends FieldValues {\n hidden?: boolean;\n locked?: boolean;\n}\n\nconst [ct] = getComponentTokenHelpers([\"form\"]);\n\ninterface FormAccessToggleProps {\n control: Control<FormAccessFieldValues, unknown>;\n name: FieldPath<FormAccessFieldValues>;\n t?: TranslationFunction;\n}\n\nconst FormAccessToggle = ({ control, name, t }: FormAccessToggleProps) => {\n const {\n field: { onChange, value, disabled: fieldDisabled },\n } = useController<FormAccessFieldValues, FieldPath<FormAccessFieldValues>>({\n name,\n control,\n rules: {},\n disabled: false,\n });\n\n const id = useId();\n\n return (\n <StyledFormAccessToggle>\n <StyledLabel isValid formItemId={id}>\n {t?.(`access.${name === \"locked\" ? \"lock\" : \"hide\"}Label`) ??\n name === \"locked\"\n ? \"Lock\"\n : \"Hide\"}\n </StyledLabel>\n <Toggle\n checked={value}\n disabled={fieldDisabled}\n onChange={onChange}\n id={id}\n />\n </StyledFormAccessToggle>\n );\n};\n\nconst StyledFormAccessToggle = styled.div`\n display: flex;\n align-items: center;\n justify-content: flex-start;\n column-gap: ${ct(\"access-toggle-gap\")};\n`;\n\nconst StyledLabel = styled(FormLabel)`\n width: auto;\n`;\n\nexport interface FormAccessTogglesProps {\n className?: string;\n isAdmin: boolean;\n hideLock?: boolean;\n hideHide?: boolean;\n t?: TranslationFunction;\n}\n\nexport const FormAccessToggles = ({\n className,\n t,\n isAdmin,\n hideHide,\n hideLock,\n}: FormAccessTogglesProps) => {\n const { control } = useFormContext<FormAccessFieldValues>();\n\n if (!isAdmin) return null;\n\n return (\n <StyledFormAccessToggles className={className}>\n <Text textAlign=\"right\" variant=\"body\" color=\"dark\">\n {t?.(\"access.label\") ?? \"Access:\"}\n </Text>\n <ToggleWrapper>\n {!hideHide && <FormAccessToggle name=\"hidden\" control={control} />}\n {!hideLock && <FormAccessToggle name=\"locked\" control={control} />}\n </ToggleWrapper>\n </StyledFormAccessToggles>\n );\n};\n\nconst StyledFormAccessToggles = styled.div`\n width: 100%;\n display: grid;\n align-items: center;\n background-color: ${getSemanticToken(\"color-grey10\")};\n border-radius: ${getSemanticToken(\"spacing-4\")};\n grid-template-columns: ${ct(\"label-width\")} 1fr;\n height: ${ct(\"access-toggle-height\")};\n column-gap: ${ct(\"label-column-gap\")};\n`;\n\nconst ToggleWrapper = styled.div`\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n column-gap: ${ct(\"label-column-gap\")};\n`;\n","import { memo, useCallback } from \"react\";\nimport { FormInput, type FormInputProps } from \"./form-input\";\nimport type { TranslationFunction } from \"../../../common/types\";\nimport type { Validate } from \"..\";\nimport { NO_LEADING_OR_TRAILING_SPACES_PATTERN } from \"../../../../helpers\";\n\ninterface FormNameInputProps\n extends Omit<\n FormInputProps,\n \"name\" | \"handleError\" | \"validate\" | \"maxLength\"\n > {\n nameBlackList?: string[];\n t?: TranslationFunction;\n maxLength?: number;\n}\n\nexport const FormNameInput = memo(\n ({ nameBlackList, maxLength, t, ...props }: FormNameInputProps) => {\n const validate: Validate<string, unknown> = useCallback(\n (value) => {\n if (!NO_LEADING_OR_TRAILING_SPACES_PATTERN.test(value)) {\n return (\n t?.(\"form.noLeadingOrTrailingSpacesName\") ??\n \"Cannot have leading or trailing spaces.\"\n );\n }\n if (maxLength && value.length > maxLength) {\n return (\n t?.(\"form.tooLongName\") ?? `Cannot be longer than ${maxLength}.`\n );\n }\n if (nameBlackList && nameBlackList.includes(value)) {\n return t?.(\"form.duplicateName\") ?? \"This name is already taken\";\n }\n\n return true;\n },\n [maxLength, nameBlackList, t]\n );\n\n return (\n <FormInput\n validate={validate}\n handleError=\"message\"\n name=\"name\"\n {...props}\n />\n );\n }\n);\n","import { useCallback, useId, useMemo } from \"react\";\nimport { ClassNames } from \"@emotion/react\";\n// eslint-disable-next-line no-restricted-imports\nimport {\n useController,\n useFormContext,\n type FieldPath,\n type FieldValues,\n} from \"react-hook-form\";\nimport { Icon, MiddleTruncateText, type InputProps } from \"../../../atoms\";\nimport { FormErrorMessage } from \"../common/components/form-error-message\";\nimport { FormLabel } from \"../common/components/form-label\";\nimport {\n FormFieldWrapper,\n FormInputWrapper,\n HiddenFormInput,\n} from \"../common/form.styles\";\nimport type { BaseFormFieldProps } from \"../common/types\";\nimport {\n ComboBox,\n FakeInputReference,\n type ComboBoxOption,\n type ComboBoxProps,\n} from \"../../combobox\";\nimport styled from \"@emotion/styled\";\n\nexport type FormComboBoxProps<\n T extends FieldValues = FieldValues,\n N extends FieldPath<T> = FieldPath<T>\n> = BaseFormFieldProps<T, N> &\n Pick<\n InputProps,\n | \"type\"\n | \"className\"\n | \"placeholder\"\n | \"prefixIconId\"\n | \"prefixIconColor\"\n | \"suffixIconColor\"\n | \"suffixIconId\"\n | \"autoFocus\"\n > & {\n autoTrim?: boolean;\n options: ComboBoxOption[];\n useLabelAsValue?: boolean;\n };\n\nexport const FormComboBox = <\n T extends FieldValues = FieldValues,\n N extends FieldPath<T> = FieldPath<T>\n>({\n name,\n disabled,\n label,\n placeholder,\n type,\n className,\n handleError,\n prefixIconId,\n prefixIconColor,\n suffixIconColor,\n suffixIconId,\n autoFocus,\n readOnly,\n options,\n useLabelAsValue,\n ...controlOptions\n}: FormComboBoxProps<T, N>) => {\n const { control } = useFormContext<T>();\n\n const {\n field: { ref: fieldRef, ...field },\n fieldState: { error },\n } = useController({ name, control, rules: controlOptions, disabled });\n\n const id = useId();\n\n const onSelect: ComboBoxProps[\"onSelectionChange\"] = useCallback(\n (_, value) => {\n field.onChange(value ?? \"\");\n },\n [field]\n );\n\n const selected = useMemo<ComboBoxOption | undefined>(() => {\n if (field.value) {\n return {\n id: field.value,\n name: field.value,\n };\n }\n return undefined;\n }, [field.value]);\n\n return (\n <ClassNames>\n {({ cx }) => (\n <FormFieldWrapper>\n <FormInputWrapper className={cx({ hasLabel: !!label })}>\n {label && (\n <FormLabel\n formItemId={id}\n isValid={!error}\n required={!!controlOptions.required}\n >\n {label}\n </FormLabel>\n )}\n <ComboBox\n options={options}\n selected={selected}\n onSelectionChange={onSelect}\n >\n <ComboBoxReference>\n <MiddleTruncateText variant=\"body\" color=\"dark\">\n {field.value}\n </MiddleTruncateText>\n <IconWrapper>\n <Icon iconId=\"Down\" size=\"sm\" color=\"black\" />\n </IconWrapper>\n </ComboBoxReference>\n </ComboBox>\n </FormInputWrapper>\n {!!handleError && (\n <FormErrorMessage\n handleError={handleError}\n name={name}\n hasLabel={!!label}\n />\n )}\n <HiddenFormInput ref={fieldRef} {...field} />\n </FormFieldWrapper>\n )}\n </ClassNames>\n );\n};\n\nconst ComboBoxReference = styled(FakeInputReference)`\n height: 29px;\n width: 100%;\n`;\n\nconst IconWrapper = styled.div`\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n","import { useCallback, useId, useRef, type DragEvent } from \"react\";\nimport { ClassNames } from \"@emotion/react\";\nimport { useMergeRefs } from \"@floating-ui/react\";\n// eslint-disable-next-line no-restricted-imports\nimport {\n useController,\n useFormContext,\n type FieldPath,\n type FieldValues,\n} from \"react-hook-form\";\nimport { Icon, IconButton, Text } from \"../../../atoms\";\nimport { FormErrorMessage } from \"../common/components/form-error-message\";\nimport { FormLabel } from \"../common/components/form-label\";\nimport { FormFieldWrapper, FormInputWrapper } from \"../common/form.styles\";\nimport type { BaseFormFieldProps } from \"../common/types\";\nimport styled from \"@emotion/styled\";\nimport { getSemanticToken } from \"../../../../styles\";\n\nexport type FormFileInputProps<\n T extends FieldValues = FieldValues,\n N extends FieldPath<T> = FieldPath<T>\n> = BaseFormFieldProps<T, N> & {\n placeholder: string;\n};\n\nexport const FormFileInput = <\n T extends FieldValues = FieldValues,\n N extends FieldPath<T> = FieldPath<T>\n>({\n name,\n disabled,\n label,\n handleError,\n readOnly,\n placeholder,\n ...controlOptions\n}: FormFileInputProps<T, N>) => {\n const { control } = useFormContext<T>();\n const ref = useRef<HTMLDivElement | null>(null);\n const {\n field: { ref: fieldRef, value, onChange, ...field },\n fieldState: { error },\n } = useController({ name, control, rules: controlOptions, disabled });\n\n const id = useId();\n\n const formInputRef = useMergeRefs([fieldRef, ref]);\n\n const onClick = useCallback(() => {\n if (ref.current) {\n ref.current.click();\n }\n }, []);\n\n const onDragOver = useCallback((e: DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n }, []);\n\n const onDrop = useCallback(\n (e: DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n\n let foundFile = false;\n\n if (e.dataTransfer.items.length) {\n for (let i = 0; i < e.dataTransfer.items.length; i++) {\n if (foundFile) {\n break;\n }\n const item = e.dataTransfer.items[i];\n if (item.kind === \"file\") {\n const file = item.getAsFile();\n if (file) {\n foundFile = true;\n onChange(file);\n }\n }\n }\n }\n },\n [onChange]\n );\n\n const onRemoveFile = useCallback(() => {\n onChange(undefined);\n }, [onChange]);\n\n return (\n <ClassNames>\n {({ cx }) => (\n <FormFieldWrapper>\n <FormInputWrapper className={cx({ hasLabel: !!label })}>\n {label && (\n <FormLabel\n formItemId={id}\n isValid={!error}\n required={!!controlOptions.required}\n >\n {label}\n </FormLabel>\n )}\n {!value ? (\n <FileDropZone\n onDrop={onDrop}\n onClick={onClick}\n onDragOver={onDragOver}\n >\n <Icon iconId=\"File\" size=\"med\" color=\"black\" />\n <Text variant=\"body\" color=\"dark\">\n {placeholder}\n </Text>\n </FileDropZone>\n ) : (\n <SelectedFileWrapper>\n <Icon iconId=\"File\" size=\"sm\" color=\"black\" />\n <Text variant=\"body\" color=\"dark\">\n {value.name}\n </Text>\n <RemoveFileButton\n onClick={onRemoveFile}\n iconId=\"Close\"\n size=\"sm\"\n color=\"black\"\n />\n </SelectedFileWrapper>\n )}\n <HiddenInput\n value={value?.fileName}\n {...field}\n id={id}\n onChange={(e) => {\n if (e.target.files) {\n onChange(e.target.files[0]);\n }\n }}\n type=\"file\"\n ref={formInputRef}\n />\n </FormInputWrapper>\n {!!handleError && (\n <FormErrorMessage\n handleError={handleError}\n name={name}\n hasLabel={!!label}\n />\n )}\n </FormFieldWrapper>\n )}\n </ClassNames>\n );\n};\n\nconst FileWrapper = styled.div`\n width: 100%;\n padding: ${getSemanticToken(\"spacing-12\")};\n display: flex;\n border: 1px solid ${getSemanticToken(\"color-grey30\")};\n background-color: ${getSemanticToken(\"color-grey10\")};\n border-radius: ${getSemanticToken(\"spacing-6\")};\n`;\n\nconst FileDropZone = styled(FileWrapper)`\n align-items: center;\n justify-content: center;\n flex-direction: column;\n row-gap: ${getSemanticToken(\"spacing-16\")};\n transition: border 0.125s ease-in-out;\n cursor: pointer;\n :hover {\n border-color: ${getSemanticToken(\"color-grey50\")};\n }\n`;\n\nconst HiddenInput = styled.input`\n display: none;\n`;\n\nconst SelectedFileWrapper = styled(FileWrapper)`\n align-items: flex-start;\n justify-content: flex-start;\n column-gap: ${getSemanticToken(\"spacing-4\")};\n`;\n\nconst RemoveFileButton = styled(IconButton)`\n margin-left: auto;\n`;\n","import { useCallback, useId } from \"react\";\n// eslint-disable-next-line no-restricted-imports\nimport {\n useController,\n useFormContext,\n type FieldPath,\n type FieldValues,\n} from \"react-hook-form\";\nimport {\n MultiSelect,\n type MultiSelectOption,\n type MultiSelectProps,\n} from \"../../../atoms\";\nimport { FormLabel } from \"../common/components/form-label\";\nimport { ClassNames } from \"@emotion/react\";\nimport { FormErrorMessage } from \"../common/components/form-error-message\";\nimport { FormFieldWrapper, FormInputWrapper } from \"../common/form.styles\";\nimport type { BaseFormFieldProps } from \"../common/types\";\n\nexport type FormMultiSelectProps<\n T extends FieldValues = FieldValues,\n N extends FieldPath<T> = FieldPath<T>\n> = BaseFormFieldProps<T, N> &\n Omit<MultiSelectProps, \"disabled\" | \"selected\" | \"onChange\">;\n\nexport const FormMultiSelect = <\n T extends FieldValues = FieldValues,\n N extends FieldPath<T> = FieldPath<T>\n>({\n name,\n disabled,\n label,\n handleError,\n options,\n selectAllHidden,\n SelectAllItemTemplate,\n ListItemTemplate,\n SelectedItemTemplate,\n className,\n readOnly,\n closeOnSelect,\n ...controlOptions\n}: FormMultiSelectProps<T, N>) => {\n const { control } = useFormContext<T>();\n\n const {\n field: { value, onChange },\n fieldState: { error },\n } = useController({ name, control, rules: controlOptions, disabled });\n\n const id = useId();\n\n const onSelect: MultiSelectProps[\"onChange\"] = useCallback(\n (newSelected: MultiSelectOption[]) => {\n onChange(newSelected);\n },\n [onChange]\n );\n\n return (\n <ClassNames>\n {({ cx }) => (\n <FormFieldWrapper>\n <FormInputWrapper className={cx({ hasLabel: !!label })}>\n {label && (\n <FormLabel\n formItemId={id}\n isValid={!error}\n required={!!controlOptions.required}\n >\n {label}\n </FormLabel>\n )}\n <MultiSelect\n disabled={disabled || readOnly}\n options={options}\n closeOnSelect={closeOnSelect}\n onChange={onSelect}\n selected={value}\n className={className}\n SelectAllItemTemplate={SelectAllItemTemplate}\n ListItemTemplate={ListItemTemplate}\n SelectedItemTemplate={SelectedItemTemplate}\n />\n </FormInputWrapper>\n {!!handleError && (\n <FormErrorMessage\n handleError={handleError}\n name={name}\n hasLabel={!!label}\n />\n )}\n </FormFieldWrapper>\n )}\n </ClassNames>\n );\n};\n","import { useEffect, useState } from \"react\";\nimport type { ListDataProvider, ListItem } from \"../common/types\";\n\nexport const useLoadDataProvider = <T extends ListItem>(\n dataProvider: ListDataProvider<T> | undefined | null,\n onInit?: () => void\n) => {\n const [loaded, setLoaded] = useState(false);\n\n useEffect(() => {\n async function init() {\n if (dataProvider?.init) {\n await dataProvider.init?.();\n onInit?.();\n }\n setLoaded(true);\n }\n init();\n return () => {\n dataProvider?.dispose?.();\n };\n }, [onInit, dataProvider]);\n\n return loaded;\n};\n","import { createContext, useContext } from \"react\";\nimport { noop } from \"../../../../../helpers\";\n\nexport interface SelectListContextValue {\n isSelected: (itemId: string) => boolean;\n selected: string[];\n toggleSelection: (id: string) => void;\n isDisabled: boolean;\n}\n\nexport const SelectListContext = createContext<\n SelectListContextValue | undefined\n>({\n isSelected: () => false,\n selected: [],\n toggleSelection: noop,\n isDisabled: false,\n});\n\nexport const useSelectListContext = () => {\n const context = useContext(SelectListContext);\n\n if (!context) {\n return {\n isSelected: () => false,\n selected: [],\n toggleSelection: noop,\n isDisabled: false,\n };\n }\n\n return context;\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { KosLog } from \"@kosdev-code/kos-ui-sdk\";\nimport React, {\n ReactNode,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport type {\n DataProviderContext,\n DataProviderContextAware,\n ListDataProvider,\n ListItem,\n} from \"../types\";\n\nexport function isContextAware<\n C extends Record<string, any> = Record<string, any>\n>(item: any): item is DataProviderContextAware<C> {\n return item[\"context\"] !== undefined;\n}\n\ninterface ListContextDataType<\n C extends Record<string, any> = Record<string, any>\n> {\n data: DataProviderContext<C>;\n}\n\ninterface DataProviderContextProps<\n T extends ListItem = ListItem,\n C extends Record<string, any> = Record<string, any>\n> {\n dataProvider?: ListDataProvider<T> & DataProviderContextAware<C>;\n children: ReactNode;\n}\n\nexport const ListContext = React.createContext<ListContextDataType<any> | null>(\n null\n);\n\nexport const ListContextProvider = <\n T extends ListItem = ListItem,\n C extends Record<string, any> = Record<string, any>\n>({\n children,\n dataProvider,\n}: DataProviderContextProps<T, C>) => {\n const [dataProviderContextData, setDataProviderContextData] =\n useState<DataProviderContext<C>>();\n\n const value: ListContextDataType<C> = useMemo(() => {\n if (dataProvider) {\n return {\n data: dataProviderContextData as DataProviderContext<C>,\n };\n }\n return {\n data: new Map() as DataProviderContext<C>,\n };\n }, [dataProvider, dataProviderContextData]);\n\n useEffect(() => {\n const listener = (context: DataProviderContext<C>) => {\n setDataProviderContextData(context);\n };\n if (dataProvider && isContextAware<C>(dataProvider)) {\n const _context = dataProvider.context;\n\n dataProvider.addContextChangeListener?.(listener);\n if (_context) {\n setDataProviderContextData(_context);\n }\n }\n return () => {\n if (dataProvider && isContextAware<C>(dataProvider)) {\n dataProvider?.removeContextChangeListener?.(listener);\n }\n };\n }, [dataProvider]);\n\n return <ListContext.Provider value={value}>{children}</ListContext.Provider>;\n};\nexport const useListContext = <\n C extends Record<string, any> = Record<string, any>\n>() => {\n const context = useContext(ListContext) as ListContextDataType<C>;\n\n if (!context) {\n KosLog.info(\n \"useListDataContext must be used within a DataProviderContextProvider\"\n );\n }\n return context;\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n isKosDataModel,\n kosAction,\n kosAutoEffect,\n whenReady,\n} from \"@kosdev-code/kos-ui-sdk\";\nimport { action, computed, makeObservable, observable, reaction } from \"mobx\";\nimport {\n InputFilterAware,\n InputSortAware,\n ListDataProvider,\n ListItem,\n type DataProviderContext,\n type DataProviderContextAware,\n type ItemMap,\n} from \"../types\";\n\ntype ListContextListener<C extends Record<string, any> = Record<string, any>> =\n (context: DataProviderContext<C>) => void;\nconst resolver =\n <P extends Record<string, any>>(parent: P) =>\n <C extends Record<string, any> = Record<string, any>>(\n context?: DataProviderContext<C>\n ) =>\n <I extends Record<string, any>>(\n resolver: (this: P, context?: DataProviderContext<C>) => I[]\n ) =>\n () =>\n resolver.call(parent, context);\nexport abstract class BaseObservableDataProvider<\n P extends Record<string, any>,\n I extends Record<string, any>,\n T extends ListItem = ListItem,\n C extends Record<string, any> = Record<string, any>\n> implements\n ListDataProvider<T>,\n InputSortAware<I>,\n InputFilterAware<I, C>,\n DataProviderContextAware<C>\n{\n protected parent: P;\n\n private _itemMap: ItemMap<I, T, C>;\n private disposer?: () => void;\n private _items: Map<string, T>;\n private listeners: ListContextListener<C>[] = [];\n context: DataProviderContext<C>;\n resolvedItems: I[];\n resolver: (this: P, context?: DataProviderContext<C>) => I[];\n version: number;\n\n initialized: boolean;\n\n constructor(\n parent: P,\n resolver: (this: P, context?: DataProviderContext<C>) => I[],\n itemMap: ItemMap<I, T, C>,\n contextData?: C\n ) {\n this.parent = parent;\n this.context = observable.map(\n new Map(Object.entries(contextData || ({} as C)))\n );\n this.version = 0;\n this._itemMap = itemMap;\n this.initialized = false;\n this._items = observable.map(new Map());\n this.resolvedItems = [];\n this.resolver = resolver.bind(parent);\n this.listeners = [];\n makeObservable(this, {\n items: computed,\n initialized: observable,\n version: observable,\n refresh: action,\n resolvedItems: observable,\n context: observable,\n });\n }\n\n filterByInputItem(item: I, _context?: DataProviderContext<C>) {\n return !!item;\n }\n\n sortByInputItem(a: I, b: I) {\n return a.name ? a.name?.localeCompare(b.name) : -1;\n }\n\n refresh() {\n this.version = this.version + 1;\n }\n\n get items() {\n if (!this.initialized || this.version < 0) {\n return [];\n }\n\n const list: I[] = this.resolvedItems;\n\n const unique = [...new Set(list)];\n\n const itemMap = (item: I) => this._itemMap(item, this.context);\n const inputFilter = (item: I) => this.filterByInputItem(item, this.context);\n const tmp = unique\n .filter(inputFilter.bind(this))\n .sort(this.sortByInputItem.bind(this))\n .map(itemMap) as T[];\n\n const toRemove = Array.from(this._items.keys()).filter(\n (key) => !tmp.find((item) => item.id === key)\n );\n\n toRemove.forEach((key) => {\n kosAction(() => {\n this._items.delete(key);\n });\n });\n tmp.reduce((acc, item) => {\n if (!acc.has(item.id)) {\n kosAction(() => {\n acc.set(item.id, item);\n });\n } else {\n const existing = acc.get(item.id);\n if (existing) {\n kosAction(() => {\n const changed = Object.assign(existing, item);\n acc.set(item.id, changed);\n });\n }\n }\n return acc;\n }, this._items);\n\n return tmp.map((item) => this._items.get(item.id) as T);\n }\n\n async init() {\n if (this.initialized) {\n return;\n }\n if (isKosDataModel(this.parent)) {\n await whenReady(this.parent);\n }\n\n if (this.resolver) {\n const _resolver = resolver(this.parent)(this.context)(this.resolver);\n this.disposer = reaction(\n _resolver,\n (items) => {\n this.resolvedItems = items;\n this.refresh();\n },\n { fireImmediately: true }\n );\n }\n kosAction(() => {\n this.initialized = true;\n });\n\n return;\n }\n\n whenReady(): Promise<void> {\n return new Promise((resolve) => {\n const dispose = kosAutoEffect(() => {\n if (this.initialized) {\n resolve();\n dispose();\n }\n });\n });\n }\n updateContextValue(key: keyof C, value: C[keyof C]) {\n kosAction(() => {\n this.context.set(key, value);\n this.refresh();\n });\n }\n\n removeContextValue(key: keyof C) {\n this.context.delete(key);\n this.refresh();\n }\n\n dispose() {\n if (this.disposer) {\n this.disposer();\n }\n kosAction(() => {\n this.initialized = false;\n });\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IKosDataContainer, IKosModelContainer } from \"@kosdev-code/kos-ui-sdk\";\nimport {\n type InputFilterAware,\n type InputSortAware,\n type ItemMap,\n type ListDataProvider,\n type ListItem,\n} from \"../types\";\nimport { BaseObservableDataProvider } from \"./base-observable-data-provider\";\n\nconst isContainer = (\n item: any\n): item is IKosDataContainer<any> | IKosModelContainer<any> =>\n item.data !== undefined;\n\nexport type ModelArrayKeys<P, T> = {\n [K in keyof P]: P[K] extends T[]\n ? K\n : P[K] extends IKosModelContainer<infer U>\n ? U extends T\n ? K\n : P[K] extends IKosDataContainer<infer U>\n ? U extends T\n ? K\n : never\n : never\n : never;\n}[keyof P];\n\nexport const keyResolver =\n <P, I>(parent: P) =>\n (key: ModelKey<P, I>) =>\n () => {\n const items: I[] = [];\n const keys = Array.isArray(key) ? key : [key];\n keys.forEach((k) => {\n const item = parent[k];\n if (isContainer(item)) {\n items.push(...item.data);\n } else if (Array.isArray(item)) {\n items.push(...item);\n }\n });\n return items;\n };\nexport type ModelKey<P, I> = ModelArrayKeys<P, I> | ModelArrayKeys<P, I>[];\nexport abstract class ObservableDataProvider<\n P extends Record<string, any>,\n I extends Record<string, any>,\n T extends ListItem = ListItem,\n C extends Record<string, any> = Record<string, any>\n >\n extends BaseObservableDataProvider<P, I, T, C>\n implements ListDataProvider<T>, InputSortAware<I>, InputFilterAware<I, C>\n{\n protected _key: ModelArrayKeys<P, I>[];\n\n constructor(\n parent: P,\n key: ModelKey<P, I>,\n itemMap: ItemMap<I, T, C>,\n context?: C\n ) {\n super(parent, keyResolver<P, I>(parent)(key), itemMap, context);\n this._key = Array.isArray(key) ? key : [key];\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { computed, makeObservable } from \"mobx\";\nimport { GroupAware, GroupData, GroupedListItem } from \"./types\";\nimport {\n ModelArrayKeys,\n ObservableDataProvider,\n} from \"../common/data-providers/observable-data-provider\";\nimport type { ItemMap } from \"../common/types\";\n\ntype ModelKey<P, I> = ModelArrayKeys<P, I> | ModelArrayKeys<P, I>[];\nexport abstract class GroupedObservableDataProvider<\n P extends Record<string, any>,\n I extends Record<string, any>,\n T extends GroupedListItem = GroupedListItem,\n C extends Record<string, any> = Record<string, any>\n >\n extends ObservableDataProvider<P, I, T, C>\n implements GroupAware<T>\n{\n constructor(\n parent: P,\n key: ModelKey<P, I>,\n itemMap: ItemMap<I, T, C>,\n context?: C\n ) {\n super(parent, key, itemMap, context);\n makeObservable(this, {\n groups: computed,\n itemsByGroup: computed,\n });\n }\n\n get itemsByGroup() {\n return this.items.reduce<Record<string, T[]>>((acc, item) => {\n const group = item.group.groupId;\n if (!acc[group]) {\n acc[group] = [];\n }\n acc[group].push(item);\n return acc;\n }, {} as Record<string, T[]>);\n }\n get groups() {\n return this.items.map((item) => item.group).sort(this.sortGroup.bind(this));\n }\n\n getGroupItems(groupId: string) {\n return this.itemsByGroup[groupId] || [];\n }\n\n sortGroup(a: GroupData, b: GroupData) {\n return a.name.localeCompare(b.name);\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ListDataProvider, ListItem } from \"../types\";\n\ntype PropWithKey<P extends Record<string, any>> = {\n name: keyof P;\n key?: string; // Optional key as a string\n};\n\nexport interface ValueListItem extends ListItem {\n value: any;\n}\nexport class PropertyDataProvider<P extends Record<string, any>>\n implements ListDataProvider\n{\n items: ValueListItem[];\n parent: P;\n\n constructor(parent: P, props: PropWithKey<P>[] = []) {\n this.parent = parent;\n this.items = props.map((prop) => {\n return {\n id: `${this.parent.id}-${prop.name.toString()}`,\n name: prop.key || prop.name.toString(),\n data: prop,\n value: this.parent[prop.name], // Corrected access to parent property\n };\n });\n }\n}\n","import type {\n ItemTemplateType,\n ListItem,\n ListItemTemplateFactory,\n} from \"./types\";\n\nexport function isComponentFactory<T extends ListItem = ListItem>(\n item: ItemTemplateType<T>\n): item is ListItemTemplateFactory<T> {\n return item[\"build\"] !== undefined;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport styled from \"@emotion/styled\";\nimport { kosComponent } from \"@kosdev-code/kos-ui-sdk\";\n\nimport { ListContextProvider } from \"./common/contexts\";\nimport { isComponentFactory } from \"./common/helpers\";\nimport {\n ListDataProvider,\n ListItem,\n type ItemTemplateType,\n type ListProps,\n} from \"./common/types\";\nimport { useLoadDataProvider } from \"./hooks/useLoadDataProvider\";\n\nconst ListContainer = styled.div`\n width: 100%;\n`;\n\nconst itemRenderer = <\n T extends ListItem = ListItem,\n P extends ListDataProvider<T> = ListDataProvider<T>\n>(\n provider: P,\n ItemTemplate: ItemTemplateType<T>,\n onListItemAction?: (itemId: string, actionId: string) => void\n) =>\n provider.items.map((item) => {\n const Template = isComponentFactory<T>(ItemTemplate)\n ? ItemTemplate.build(item)\n : ItemTemplate;\n\n return (\n <Template\n key={item.id}\n data-key={item.id}\n {...item}\n onListItemAction={onListItemAction}\n />\n );\n });\n\n/**\n * List component\n *\n * @param dataProvider - data provider for the list. Must implement ListDataProvider interface.\n * @param ItemTemplate - template for the list item. Template will be passed the item data and the onListItemAction handler.\n * @param onListItemAction - action handler for list item. Called if an action is selected from the list item\n * @returns List component\n */\nexport const List = kosComponent(\n <\n T extends ListItem,\n P extends ListDataProvider<T> = ListDataProvider<T>,\n C extends Record<string, any> = Record<string, any>\n >({\n dataProvider,\n firstChild,\n ItemTemplate,\n lastChild,\n onListItemAction,\n onInit,\n emptyState,\n className,\n itemListRenderer = itemRenderer,\n }: ListProps<T, P>) => {\n const loaded = useLoadDataProvider<T>(dataProvider, onInit);\n\n const items =\n loaded && dataProvider\n ? itemListRenderer(dataProvider as P, ItemTemplate, onListItemAction)\n : [];\n\n return (\n <ListContextProvider<T, C> dataProvider={dataProvider || undefined}>\n <ListContainer className={className}>\n {firstChild}\n {!loaded\n ? null\n : items.length === 0 && emptyState\n ? emptyState\n : items}\n {lastChild}\n </ListContainer>\n </ListContextProvider>\n );\n }\n);\n","import { kosComponent } from \"@kosdev-code/kos-ui-sdk\";\nimport {\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type ReactElement,\n} from \"react\";\nimport { SelectListContext } from \"../common/contexts\";\nimport type { ListDataProvider, ListItem, ListProps } from \"../common/types\";\nimport { List } from \"../list\";\n\nexport interface SelectListProps<T extends ListItem = ListItem> {\n onSelect: (id: string, state: \"selected\" | \"unselected\") => void;\n isSingleSelect?: boolean;\n selected?: string[];\n disabled?: boolean;\n autoSelectFirstItem?: boolean;\n getFirstItem?: (items: T[]) => T | undefined;\n}\n\nexport const SelectList: <\n T extends ListItem = ListItem,\n P extends ListDataProvider<T> = ListDataProvider<T>\n>(\n props: ListProps<T, P> & SelectListProps<T>\n) => ReactElement | null = kosComponent(\n ({\n isSingleSelect = true,\n onSelect,\n selected,\n disabled,\n autoSelectFirstItem,\n dataProvider,\n getFirstItem,\n ...listProps\n }) => {\n const [internalSelected, setInternalSelected] = useState<string[]>(\n selected ?? []\n );\n\n const selectedRef = useRef<string[]>(internalSelected ?? []);\n\n useLayoutEffect(() => {\n selectedRef.current = internalSelected;\n }, [internalSelected]);\n\n useEffect(() => {\n setInternalSelected(selected ?? []);\n }, [selected]);\n\n const toggleSelection = useCallback(\n (itemId: string) => {\n onSelect(\n itemId,\n selectedRef.current.includes(itemId) ? \"unselected\" : \"selected\"\n );\n setInternalSelected((prev) => {\n if (isSingleSelect) {\n return [itemId];\n }\n if (prev.includes(itemId)) {\n return prev.filter((id) => id !== itemId);\n }\n return [...prev, itemId];\n });\n },\n [isSingleSelect, onSelect]\n );\n\n const isSelected = useCallback(\n (itemId: string) => selectedRef.current.includes(itemId),\n []\n );\n\n const value = useMemo(() => {\n return {\n isSelected,\n selected: internalSelected,\n toggleSelection,\n isDisabled: !!disabled,\n };\n }, [isSelected, internalSelected, toggleSelection, disabled]);\n\n useEffect(() => {\n if (\n autoSelectFirstItem &&\n dataProvider?.items &&\n selectedRef.current.length === 0\n ) {\n let firstItemId: string | undefined = undefined;\n if (getFirstItem) {\n firstItemId = getFirstItem(dataProvider.items)?.id;\n } else {\n firstItemId = dataProvider.items[0]?.id;\n }\n\n if (firstItemId) {\n toggleSelection(firstItemId);\n }\n }\n }, [\n autoSelectFirstItem,\n dataProvider?.items,\n getFirstItem,\n toggleSelection,\n ]);\n\n return (\n <SelectListContext.Provider value={value}>\n <List dataProvider={dataProvider} {...listProps} />\n </SelectListContext.Provider>\n );\n }\n);\n","import React, {\n PropsWithChildren,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { noop } from \"../../../../helpers/noop\";\n\nimport { SelectList, type SelectListProps } from \"../select-list\";\nimport type {\n GroupData,\n GroupListDataProvider,\n GroupedListItem,\n} from \"./types\";\nimport type { ItemTemplateType, ListProps } from \"../common/types\";\nimport { isComponentFactory } from \"../common/helpers\";\n\ninterface GroupContextValue {\n openedGroups: string[];\n toggleGroup: (groupId: string) => void;\n}\n\nexport function isGroupFactory<T extends GroupData = GroupData>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n item: any\n): item is GroupTemplateFactory<PropsWithChildren<T>> {\n return item.build !== undefined;\n}\nexport interface GroupTemplateFactory<T extends GroupData> {\n build: (group: T) => React.FunctionComponent<PropsWithChildren<T>>;\n}\nexport type GroupTemplateType<T extends GroupData = GroupData> =\n | React.FunctionComponent<PropsWithChildren<T>>\n | GroupTemplateFactory<PropsWithChildren<T>>;\n\nconst itemRenderer =\n <\n T extends GroupedListItem = GroupedListItem,\n P extends GroupListDataProvider<T> = GroupListDataProvider<T>\n >(\n GroupTemplate: GroupTemplateType\n ) =>\n (\n provider: P,\n ItemTemplate: ItemTemplateType<T>,\n onListItemAction?: (itemId: string, actionId: string) => void\n ) => {\n const groups = provider.groups.reduce<GroupData[]>((acc, group) => {\n if (acc.find((g) => g.groupId === group.groupId)) {\n return acc;\n }\n return [...acc, group];\n }, []);\n\n return groups.map((group) => {\n const GroupComponent = isGroupFactory(GroupTemplate)\n ? GroupTemplate.build(group)\n : GroupTemplate;\n\n const items = provider.getGroupItems(group.groupId);\n const children = items.map((item) => {\n const Template = isComponentFactory<T>(ItemTemplate)\n ? ItemTemplate.build(item)\n : ItemTemplate;\n\n return (\n <Template\n key={item.id}\n data-key={item.id}\n {...item}\n onListItemAction={onListItemAction}\n />\n );\n });\n\n return (\n <GroupComponent\n key={group.groupId}\n groupId={group.groupId}\n name={group.name}\n >\n {children}\n </GroupComponent>\n );\n });\n };\nexport const GroupContext = React.createContext<GroupContextValue | undefined>({\n openedGroups: [],\n toggleGroup: noop,\n});\n\ninterface GroupProps<T extends GroupedListItem = GroupedListItem>\n extends ListProps<T> {\n dataProvider?: GroupListDataProvider<T> | null;\n openedGroups?: string[];\n supportMultipleOpen?: boolean;\n onGroupOpen?: (groupId: string, state: \"opened\" | \"closed\") => Promise<void>;\n GroupTemplate: GroupTemplateType<GroupData>;\n}\n\nexport function GroupList<\n T extends GroupedListItem = GroupedListItem,\n P extends GroupListDataProvider<T> = GroupListDataProvider<T>\n>(props: ListProps<T, P> & GroupProps<T> & SelectListProps<T>) {\n const supportMultipleOpen = props.supportMultipleOpen ?? true;\n const [opened, setOpened] = useState<string[]>(props.openedGroups ?? []);\n\n const toggleGroup = useCallback(\n (groupId: string) => {\n props.onGroupOpen?.(\n groupId,\n opened.includes(groupId) ? \"closed\" : \"opened\"\n );\n setOpened((prev) => {\n if (!supportMultipleOpen) {\n return [groupId];\n }\n if (prev.includes(groupId)) {\n return prev.filter((id) => id !== groupId);\n }\n return [...prev, groupId];\n });\n },\n [opened, props, supportMultipleOpen]\n );\n\n useEffect(() => {\n setOpened(props.openedGroups ?? []);\n }, [props.openedGroups]);\n\n const value = useMemo(() => {\n return { openedGroups: opened, toggleGroup };\n }, [opened, toggleGroup]);\n\n return (\n <GroupContext.Provider value={value}>\n <SelectList<T, P>\n {...props}\n itemListRenderer={itemRenderer(props.GroupTemplate)}\n />\n </GroupContext.Provider>\n );\n}\n\nexport const useListGroupContext = () => {\n const context = React.useContext(GroupContext);\n if (!context) {\n return {\n openedGroups: [],\n toggleGroup: noop,\n };\n }\n\n return context;\n};\n","import styled from \"@emotion/styled\";\nimport { useCallback, type ReactNode } from \"react\";\nimport { Icon, Text } from \"../../../../../atoms\";\nimport { useListGroupContext } from \"../../../group-list/group-list\";\n\ninterface NamedCollapsibleGroupProps {\n name: string;\n groupId: string;\n children?: ReactNode;\n className?: string;\n}\n\nexport const NamedCollapsibleGroup = ({\n children,\n name,\n groupId,\n className,\n}: NamedCollapsibleGroupProps) => {\n const { openedGroups, toggleGroup } = useListGroupContext();\n\n const open = openedGroups.includes(groupId);\n\n const handleGroupToggle = useCallback(() => {\n toggleGroup(groupId);\n }, [groupId, toggleGroup]);\n\n return (\n <GroupContainer className={className} key={groupId}>\n <LabelContainer\n data-open={open}\n className=\"label-container\"\n onClick={handleGroupToggle}\n >\n {open ? (\n <Icon iconId=\"CaretDown\" size=\"xsm\" />\n ) : (\n <Icon iconId=\"CaretRight\" size=\"xsm\" />\n )}\n <Text variant=\"body\" bold>\n {name}\n </Text>\n </LabelContainer>\n\n <InnerContainer>\n {open ? (\n <ListContainer className=\"list-container\">{children}</ListContainer>\n ) : null}\n </InnerContainer>\n </GroupContainer>\n );\n};\n\nexport const AnonymousGroup = ({\n children,\n groupId,\n className,\n}: NamedCollapsibleGroupProps) => (\n <GroupContainer className={className} key={groupId}>\n {children}\n </GroupContainer>\n);\n\nconst GroupContainer = styled.div`\n display: flex;\n flex-direction: column;\n padding-bottom: 8px;\n`;\n\nconst LabelContainer = styled.div`\n display: flex;\n flex: 0;\n cursor: pointer;\n gap: 4px;\n padding-inline: 20px 12px;\n align-items: center;\n`;\n\nconst InnerContainer = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nconst ListContainer = styled.div`\n padding-inline-start: 16px;\n align-items: center;\n gap: 6px;\n padding-block-start: 8px;\n`;\n","import styled from \"@emotion/styled\";\nimport { memo, useCallback } from \"react\";\n\nimport type { NamedListItem } from \"../../types\";\nimport { useSelectListContext } from \"../../contexts\";\nimport { CheckBox, Text } from \"../../../../../atoms\";\n\nexport const CheckListItemContainer = styled.div`\n align-items: center;\n align-self: stretch;\n background: var(--Grey-White, #fff);\n border-bottom: 0.5px solid var(--Grey-20, #dfdfdf);\n display: flex;\n`;\n\nexport const CheckListItemContainerCompact = styled(CheckListItemContainer)`\n padding: 0 0 6px 0;\n`;\n\nexport const CheckListItemContainerWithDivider = styled(CheckListItemContainer)`\n border-bottom: 0.5px solid var(--Grey-20, #dfdfdf);\n`;\n\nexport const CheckListItemContainerWithDividerCompact = styled(\n CheckListItemContainerCompact\n)`\n border-bottom: 0.5px solid var(--Grey-20, #dfdfdf);\n`;\n\nexport const CheckListItemCheck = styled.div`\n align-items: center;\n display: flex;\n gap: 16px;\n height: 30px;\n justify-content: center;\n padding: 8px;\n`;\n\nexport const CheckListItemCheckCompact = styled(CheckListItemCheck)`\n height: initial;\n padding: 0 4px 0 14px;\n`;\n\nexport const CheckListItemName = styled.div`\n align-items: center;\n align-self: stretch;\n display: flex;\n flex: 1 1 auto;\n gap: 4px;\n height: 30px;\n justify-content: space-between;\n padding: 8px 8px 8px 4px;\n`;\n\nexport const CheckListItemNameCompact = styled(CheckListItemName)`\n height: initial;\n padding: 0;\n`;\n\ninterface CheckListItemTemplateProps extends NamedListItem {\n label?: string;\n mode?: \"compact\" | \"standard\";\n showDivider?: boolean;\n}\n\nexport const CheckListItemTemplate = memo(\n ({\n className,\n disabled,\n id,\n label,\n mode = \"standard\",\n name,\n showDivider = true,\n }: CheckListItemTemplateProps) => {\n const { selected, toggleSelection, isDisabled } = useSelectListContext();\n\n const handleSelect = useCallback(() => {\n toggleSelection(id);\n }, [id, toggleSelection]);\n\n const CheckBoxContainer =\n mode === \"compact\" ? CheckListItemCheckCompact : CheckListItemCheck;\n\n const CheckBoxLabel =\n mode === \"compact\" ? CheckListItemNameCompact : CheckListItemName;\n\n const Container = showDivider\n ? mode === \"compact\"\n ? CheckListItemContainerWithDividerCompact\n : CheckListItemContainerWithDivider\n : mode === \"compact\"\n ? CheckListItemContainerCompact\n : CheckListItemContainer;\n\n return (\n <Container className={className}>\n <CheckBoxContainer>\n <CheckBox\n disabled={isDisabled || disabled}\n checked={selected.includes(id)}\n onChange={handleSelect}\n />\n </CheckBoxContainer>\n <CheckBoxLabel>\n <Text variant=\"body\">{name}</Text>\n {!!label && (\n <Text color=\"grey\" variant=\"body\">\n {label}\n </Text>\n )}\n </CheckBoxLabel>\n </Container>\n );\n }\n);\n","import styled from \"@emotion/styled\";\nimport { useCallback } from \"react\";\n\nimport { ListItem } from \"../../types\";\nimport { Text } from \"../../../../../atoms\";\nimport { useSelectListContext } from \"../../contexts\";\n\nexport interface DescriptionListItem extends ListItem {\n description: string;\n}\n\nconst NamedListItemContainer = styled.div`\n display: flex;\n padding: 4px 12px 4px 4px;\n align-items: center;\n\n align-self: stretch;\n border-bottom: 0.5px solid var(--Grey-20, #dfdfdf);\n background: var(--Grey-White, #fff);\n`;\n\nconst CheckContainer = styled.div`\n display: flex;\n height: 30px;\n padding: 8px;\n justify-content: center;\n align-items: center;\n gap: 16px;\n`;\n\nconst NameContainer = styled.div`\n flex: 1 1 auto;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n height: 30px;\n padding: 8px 8px 8px 4px;\n gap: 4px;\n align-self: stretch;\n`;\nexport const DescriptionListItemTemplate: React.FunctionComponent<\n DescriptionListItem\n> = (item) => {\n const { selected, toggleSelection, isDisabled } = useSelectListContext();\n const handleSelect = useCallback(() => {\n toggleSelection(item.id);\n }, [item, toggleSelection]);\n return (\n <NamedListItemContainer>\n <CheckContainer>\n <input\n onChange={handleSelect}\n type=\"checkbox\"\n checked={selected.includes(item.id)}\n disabled={isDisabled}\n />\n </CheckContainer>\n <NameContainer>\n <Text variant=\"body\">{item.name}</Text>\n </NameContainer>\n </NamedListItemContainer>\n );\n};\n","import styled from \"@emotion/styled\";\nimport { memo, useCallback } from \"react\";\n\nimport { type NamedListItem } from \"../../types\";\nimport { ClassNames } from \"@emotion/react\";\nimport { getComponentTokenHelpers } from \"../../../../../../styles\";\nimport { Icon, Text } from \"../../../../../atoms\";\nimport { useSelectListContext } from \"../../contexts\";\n\nconst [ct] = getComponentTokenHelpers([\"named-list-item\"]);\n\nexport const NamedListItemTemplate = memo(\n ({\n id,\n iconId,\n iconColor,\n suffixIcons,\n name,\n className,\n subText,\n subTextColor,\n }: NamedListItem) => {\n const { selected, toggleSelection, isDisabled } = useSelectListContext();\n\n const handleSelect = useCallback(() => {\n if (!isDisabled) {\n toggleSelection(id);\n }\n }, [id, toggleSelection, isDisabled]);\n\n return (\n <ClassNames>\n {({ cx }) => (\n <Wrapper\n className={cx(className, {\n isSelected: selected.includes(id),\n isDisabled,\n })}\n onClick={handleSelect}\n >\n <MainTextWrapper>\n {iconId && <Icon size=\"sm\" iconId={iconId} color={iconColor} />}\n <Text className=\"named-list-item-text\" variant=\"body\">\n {name}\n </Text>\n {!!suffixIcons && (\n <SuffixIconWrapper>\n {suffixIcons.map(\n ({ iconId: suffixIconId, iconColor: suffixIconColor }) => (\n <Icon\n size=\"xsm\"\n iconId={suffixIconId}\n key={suffixIconId}\n color={suffixIconColor}\n />\n )\n )}\n </SuffixIconWrapper>\n )}\n </MainTextWrapper>\n {!!subText && (\n <SubTextWrapper className={cx({ hasIcon: !!iconId })}>\n <DescriptionText color={subTextColor ?? \"dark\"} variant=\"body\">\n {subText}\n </DescriptionText>\n </SubTextWrapper>\n )}\n </Wrapper>\n )}\n </ClassNames>\n );\n }\n);\n\nconst Wrapper = styled.div`\n display: flex;\n padding-top: ${ct(\"padding-y\")};\n padding-right: ${ct(\"padding-right\")};\n padding-bottom: ${ct(\"padding-y\")};\n padding-left: ${ct(\"padding-left\")};\n align-items: flex-start;\n justify-content: flex-start;\n gap: ${ct(\"row-gap\")};\n color: inherit;\n background-color: transparent;\n flex-direction: column;\n cursor: pointer;\n &.isDisabled {\n cursor: unset;\n }\n &.isSelected {\n color: ${ct(\"color-selected\")};\n background-color: ${ct(\"background-color-selected\")};\n }\n`;\n\nconst MainTextWrapper = styled.div`\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n gap: ${ct(\"column-gap\")};\n`;\n\nconst SubTextWrapper = styled.div`\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n &.hasIcon {\n padding-left: ${ct(\"subtext-padding-with-icon\")};\n }\n`;\n\nconst SuffixIconWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: flex-end;\n margin-left: auto;\n gap: ${ct(\"column-gap\")};\n`;\n\nconst DescriptionText = styled(Text<\"body\">)`\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n display: -webkit-box;\n overflow-wrap: anywhere;\n overflow: hidden;\n text-overflow: ellipsis;\n`;\n","import styled from \"@emotion/styled\";\nimport { useCallback } from \"react\";\nimport { ListItem } from \"../../types\";\nimport { getSemanticToken } from \"../../../../../../styles\";\nimport { ClassNames } from \"@emotion/react\";\nimport { Icon, Text, type IconIds } from \"../../../../../atoms\";\nimport { useSelectListContext } from \"../../contexts\";\n\nexport interface TableNamedListItem extends ListItem {\n iconId?: IconIds;\n}\n\nconst TableNamedListItemContainer = styled.div`\n display: flex;\n padding: ${getSemanticToken(\"spacing-8\")} ${getSemanticToken(\"spacing-10\")};\n align-items: center;\n gap: 6px;\n align-self: stretch;\n color: inherit;\n background-color: transparent;\n border-bottom: 1px solid ${getSemanticToken(\"color-grey20\")};\n &.isSelected {\n color: ${getSemanticToken(\"color-white\")};\n background-color: ${getSemanticToken(\"color-primary\")};\n }\n`;\n\nexport const TableNamedListItemTemplate: React.FunctionComponent<\n TableNamedListItem\n> = (item) => {\n const { selected, toggleSelection } = useSelectListContext();\n const handleSelect = useCallback(() => {\n toggleSelection(item.id);\n }, [item, toggleSelection]);\n\n return (\n <ClassNames>\n {({ cx }) => (\n <TableNamedListItemContainer\n className={cx({ isSelected: selected.includes(item.id) })}\n onClick={handleSelect}\n >\n {item.iconId && <Icon size=\"sm\" iconId={item.iconId} />}\n <Text variant=\"body\">{item.name}</Text>\n </TableNamedListItemContainer>\n )}\n </ClassNames>\n );\n};\n","import { useCallback, useState } from \"react\";\n\n/**\n * A custom hook for managing the state of opened groups in a GroupList component.\n *\n * @param defaultOpenedGroups - An optional array of group identifiers for groups\n * that should be opened by default.\n * @returns An object containing:\n * - `openedGroups`: The current state of opened group identifiers.\n * - `onGroupOpen`: A callback function to handle group open/close events.\n *\n * Example usage:\n *\n * ```jsx\n * import {\n * GroupList,\n * useOpenedGroups\n * } from '../../../../styles';\n *\n * const MyComponent = () => {\n * const openedGroups = useOpenedGroups(['group1', 'group2']);\n *\n * return (\n * <GroupList\n * {...openedGroups}\n * />\n * );\n * };\n * ```\n */\nexport const useOpenedGroups = (defaultOpenedGroups?: string[]) => {\n const [openedGroups, setOpenedGroups] = useState<string[] | undefined>(\n defaultOpenedGroups\n );\n\n const onGroupOpen = useCallback(\n async (groupId: string, state: \"opened\" | \"closed\") => {\n setOpenedGroups((openGroups = []) => {\n if (state === \"opened\" && !openGroups?.includes(groupId)) {\n return [...openGroups, groupId];\n } else if (state === \"closed\" && openGroups.includes(groupId)) {\n return openGroups.filter((group) => group !== groupId);\n } else {\n return openGroups;\n }\n });\n },\n []\n );\n\n return { onGroupOpen, openedGroups };\n};\n\n/**\n * A custom hook for managing selection state within grouped data.\n *\n * @param dataProvider - A GroupedObservableDataProvider.\n * @param defaultGroupSelection - An optional initial state for group selection.\n * This is a record where keys are group identifiers and values are arrays\n * of selected item IDs within that group.\n *\n * @returns An object containing:\n * - `groupSelection`: A record of the current group selection state,\n * where keys are group identifiers and values are arrays of selected\n * item IDs within those groups.\n * - `onSelect`: A callback function to handle item selection or deselection.\n * It takes an `id` of the item and a `state` (\"selected\" or \"unselected\")\n * and updates the group selection state accordingly. This is meant to be\n * passed to a <GroupList /> component.\n *\n * Example usage:\n *\n * ```tsx\n * const MyComponent = () => {\n * const { groupSelection, onSelect } = useGroupSelection(dataProvider, {\n * group1: ['item1'],\n * });\n *\n * return (\n * <GroupList onSelect={onSelect} />\n * );\n * };\n * ```\n */\nexport const useGroupSelection = (\n dataProvider: any,\n defaultGroupSelection: Record<string, string[]> = {}\n) => {\n const [groupSelection, setGroupSelection] = useState<\n Record<string, string[]>\n >(defaultGroupSelection);\n\n const onSelect = useCallback(\n (id: string, state: \"selected\" | \"unselected\") => {\n const groupId = dataProvider?.items.find((item) => item.id === id)?.group\n .groupId;\n if (!groupId) return;\n\n const groupItems = groupSelection[groupId] || [];\n const selection =\n state === \"selected\"\n ? { ...groupSelection, [groupId]: [...groupItems, id] }\n : {\n ...groupSelection,\n [groupId]: groupItems.filter((itemId) => itemId !== id),\n };\n\n setGroupSelection(selection);\n },\n [dataProvider?.items, groupSelection]\n );\n\n const clear = useCallback(() => {\n setGroupSelection({});\n }, []);\n\n return { clear, groupSelection, onSelect };\n};\n\nexport const useSelection = (\n defaultSelected: string[] = [],\n isSingleSelect = true\n) => {\n const [selected, setSelected] = useState<string[]>(defaultSelected);\n\n const onSelect = useCallback(\n (itemId: string) => {\n setSelected((prev) => {\n if (isSingleSelect) {\n return [itemId];\n }\n if (prev.includes(itemId)) {\n return prev.filter((id) => id !== itemId);\n }\n return [...prev, itemId];\n });\n },\n [isSingleSelect]\n );\n\n const clear = useCallback(() => {\n setSelected([]);\n }, []);\n\n return {\n clear,\n onSelect,\n selected,\n };\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Goal: Provide a way to pass in a list of data with parentIds and have those sorted into a tree structure.\n */\n\nimport { computed, makeObservable } from \"mobx\";\nimport { BaseObservableDataProvider } from \"../common/data-providers\";\nimport type { DataProviderContext, ItemMap } from \"../common/types\";\nimport type { TreeProvider, TreeListItem, TreeBranch } from \"./common/types\";\n\nexport abstract class TreeDataProvider<\n P extends Record<string, any>,\n I extends Record<string, any>,\n T extends TreeListItem,\n C extends Record<string, any>\n >\n extends BaseObservableDataProvider<P, I, T, C>\n implements TreeProvider<T>\n{\n parentIdKey: keyof T;\n idKey: keyof T;\n\n constructor(\n parent: P,\n resolver: (this: P, context?: DataProviderContext<C>) => I[],\n itemMap: ItemMap<I, T, C>,\n config: {\n parentIdKey: keyof T;\n idKey: keyof T;\n },\n context?: C\n ) {\n super(parent, resolver, itemMap, context);\n this.parentIdKey = config.parentIdKey;\n this.idKey = config.idKey;\n makeObservable(this, {\n tree: computed,\n childBranchLookup: computed,\n itemsById: computed,\n });\n }\n\n sortBranch(a: T, b: T) {\n return a.name.localeCompare(b.name);\n }\n\n get itemsById(): Record<string, T> {\n return this.items.reduce((prev, curr) => {\n return {\n ...prev,\n [curr[this.idKey] as string]: curr,\n };\n }, {} as Record<string, T>);\n }\n\n get childBranchLookup(): Record<string, T[]> {\n return this.items.reduce(\n (prev, item) => {\n let parentId = item[this.parentIdKey] as string;\n\n if (!parentId || this.itemsById[parentId] === undefined) {\n parentId = \"ROOT\";\n }\n\n if (parentId && !!prev[parentId]) {\n prev[parentId].push(item);\n return prev;\n }\n\n prev[parentId] = [item];\n return prev;\n },\n { ROOT: [] } as Record<string, T[]>\n );\n }\n\n get tree(): TreeBranch<T>[] {\n const createBranch = (root: T[]) => {\n const _branches: TreeBranch<T>[] = [];\n\n for (const rootBranch in root) {\n let branch: TreeBranch<T> = { ...root[rootBranch], branches: [] };\n const childRoot = this.childBranchLookup[branch[this.idKey] as string];\n\n if (!branch) {\n continue;\n }\n\n if (childRoot) {\n branch = {\n ...branch,\n branches: createBranch(childRoot),\n };\n }\n\n _branches.push(branch);\n }\n\n return _branches;\n };\n\n const rootBranches = this.childBranchLookup[\"ROOT\"];\n\n if (rootBranches) {\n return createBranch(rootBranches);\n }\n return [];\n }\n}\n","import { kosComponent } from \"@kosdev-code/kos-ui-sdk\";\nimport {\n createContext,\n useCallback,\n useContext,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type Context,\n type ReactNode,\n} from \"react\";\nimport type {\n TreeBranch,\n TreeContextValue,\n TreeListItem,\n TreeListProps,\n} from \"../types\";\n\nconst TreeContext = createContext<TreeContextValue<TreeListItem> | null>(null);\n\ninterface TreeContextProviderProps<T extends TreeListItem = TreeListItem>\n extends Pick<\n TreeListProps<T>,\n \"singleBranchOnly\" | \"setOpenedBranches\" | \"openedBranches\" | \"dataProvider\"\n > {\n children: ReactNode;\n}\n\nexport const TreeContextProvider = kosComponent(\n <T extends TreeListItem = TreeListItem>({\n children,\n singleBranchOnly,\n openedBranches: controlledOpenedBranches,\n setOpenedBranches: controlledSetOpenedBranches,\n dataProvider,\n }: TreeContextProviderProps<T>) => {\n const [_openedBranches, _setOpenedBranches] = useState<string[]>([]);\n\n const openedBranches = controlledOpenedBranches ?? _openedBranches;\n const setOpenedBranches = controlledSetOpenedBranches ?? _setOpenedBranches;\n\n const openedBranchesRef = useRef<string[]>(openedBranches);\n\n useLayoutEffect(() => {\n openedBranchesRef.current = openedBranches;\n }, [openedBranches]);\n\n const toggleBranch = useCallback(\n (branch: TreeBranch<T>) => {\n if (!dataProvider?.tree) return;\n\n const branchId = branch[dataProvider.idKey] as string;\n\n const isOpen = openedBranchesRef.current.includes(branchId);\n\n const getChildBranches = (_branch: TreeBranch<T>): string[] =>\n _branch.branches.flatMap((subBranch) => {\n const subBranchId = subBranch[dataProvider.idKey] as string;\n if (subBranch.branches.length) {\n return [subBranchId, ...getChildBranches(subBranch)];\n }\n return [];\n });\n\n const childBranches = getChildBranches(branch);\n\n if (singleBranchOnly) {\n const parentBranches: string[] = [];\n\n const getParentBranches = (_branch: TreeBranch<T> | T) => {\n const parentId = _branch[dataProvider.parentIdKey] as\n | string\n | undefined;\n\n if (parentId) {\n const parentBranch = dataProvider.itemsById[parentId];\n if (parentBranch) {\n parentBranches.push(parentId);\n getParentBranches(parentBranch);\n }\n }\n };\n\n getParentBranches(branch);\n\n setOpenedBranches(\n isOpen ? parentBranches : [...parentBranches, branchId]\n );\n } else {\n const newBranches = isOpen\n ? openedBranchesRef.current.filter(\n (openedBranchId) =>\n branchId !== openedBranchId &&\n !childBranches.includes(openedBranchId)\n )\n : [...openedBranchesRef.current, branchId];\n\n setOpenedBranches(newBranches);\n }\n },\n [\n dataProvider?.idKey,\n dataProvider?.itemsById,\n dataProvider?.parentIdKey,\n dataProvider?.tree,\n setOpenedBranches,\n singleBranchOnly,\n ]\n );\n\n const value = useMemo<TreeContextValue<T>>(() => {\n return { openedBranches, toggleBranch };\n }, [openedBranches, toggleBranch]);\n\n return (\n // @ts-expect-error Generics and context dont play well together, since context has to be statically typed.\n <TreeContext.Provider value={value}>{children}</TreeContext.Provider>\n );\n }\n);\n\nexport const useTreeListContext = <T extends TreeListItem = TreeListItem>() => {\n const context = useContext<TreeContextValue<T>>(\n TreeContext as unknown as Context<TreeContextValue<T>>\n );\n\n if (context === null) {\n throw new Error(\n \"TreeContext can only be used inside children of TreeContextProvider\"\n );\n }\n\n return context;\n};\n","import type { BranchTemplateFactory, TreeListItem } from \"../common/types\";\n\nexport function isBranchFactory<T extends TreeListItem = TreeListItem>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n item: any\n): item is BranchTemplateFactory<T> {\n return item.build !== undefined;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ClassNames } from \"@emotion/react\";\nimport { kosComponent } from \"@kosdev-code/kos-ui-sdk\";\nimport type { FunctionComponent, ReactElement } from \"react\";\nimport { isComponentFactory } from \"../common/helpers\";\nimport type { ItemTemplateType, ListProps } from \"../common/types\";\nimport { SelectList, type SelectListProps } from \"../select-list\";\nimport { TreeContextProvider } from \"./common/hooks/useTreeContext\";\nimport type {\n BranchTemplateType,\n TreeBranch,\n TreeListItem,\n TreeListProps,\n TreeProvider,\n} from \"./common/types\";\nimport { isBranchFactory } from \"./helpers/is-branch-factory\";\n\nconst itemRenderer =\n <\n T extends TreeListItem = TreeListItem,\n P extends TreeProvider<T> = TreeProvider<T>\n >(\n BranchTemplate: BranchTemplateType<T>\n ) =>\n (\n provider: P,\n ItemTemplate: ItemTemplateType<T>,\n onListItemAction?: (itemId: string, actionId: string) => void\n ) => {\n const renderBranch = (branch: TreeBranch<T>, isNotRoot?: boolean) => {\n if (!branch.branches.length && branch.isGroup) {\n return null;\n } else if (!branch.branches.length) {\n const Template = isComponentFactory<T>(ItemTemplate)\n ? ItemTemplate.build(branch)\n : ItemTemplate;\n\n return (\n <Template\n key={branch.id}\n data-key={branch.id}\n {...branch}\n onListItemAction={onListItemAction}\n />\n );\n } else {\n const BranchComponent = isBranchFactory(BranchTemplate)\n ? BranchTemplate.build(branch)\n : (BranchTemplate as FunctionComponent);\n\n const children = branch.branches.map((item) => {\n if (item.branches.length) {\n return renderBranch(item, true);\n } else {\n const Template = isComponentFactory<T>(ItemTemplate)\n ? ItemTemplate.build(item)\n : ItemTemplate;\n\n return (\n <Template\n key={item.id}\n data-key={item.id}\n {...item}\n onListItemAction={onListItemAction}\n />\n );\n }\n });\n\n return (\n <ClassNames key={branch.id}>\n {({ cx }) => (\n <BranchComponent\n className={cx({ isNotRoot }, branch.className)}\n key={branch.id}\n {...branch}\n >\n {children}\n </BranchComponent>\n )}\n </ClassNames>\n );\n }\n };\n\n return provider.tree.map((branch) => renderBranch(branch));\n };\n\nexport const TreeList: <\n T extends TreeListItem = TreeListItem,\n P extends TreeProvider<T> = TreeProvider<T>\n>(\n props: ListProps<T, P> & TreeListProps<T> & SelectListProps<T>\n) => ReactElement | null = kosComponent(\n ({\n dataProvider,\n ItemTemplate,\n onSelect,\n BranchTemplate,\n openedBranches,\n setOpenedBranches,\n singleBranchOnly,\n className,\n autoSelectFirstItem,\n selected,\n emptyState,\n getFirstItem,\n onListItemAction,\n }) => (\n <TreeContextProvider\n dataProvider={dataProvider}\n openedBranches={openedBranches}\n setOpenedBranches={setOpenedBranches}\n singleBranchOnly={singleBranchOnly}\n >\n <SelectList\n onSelect={onSelect}\n dataProvider={dataProvider}\n ItemTemplate={ItemTemplate}\n autoSelectFirstItem={autoSelectFirstItem}\n emptyState={emptyState}\n className={className}\n selected={selected}\n onListItemAction={onListItemAction}\n getFirstItem={getFirstItem}\n itemListRenderer={itemRenderer(BranchTemplate)}\n />\n </TreeContextProvider>\n )\n);\n","import styled from \"@emotion/styled\";\nimport type { BranchTemplateProps } from \"../common/types\";\nimport { ClassNames } from \"@emotion/react\";\n\nexport const AnonymousBranch = ({\n children,\n id,\n className,\n}: BranchTemplateProps) => (\n <ClassNames>\n {({ cx }) => (\n <StyledAnonymousBranch\n className={cx(\"anonymous-branch\", className)}\n key={id}\n >\n {children}\n </StyledAnonymousBranch>\n )}\n </ClassNames>\n);\n\nconst StyledAnonymousBranch = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n`;\n","import styled from \"@emotion/styled\";\nimport { kosComponent } from \"@kosdev-code/kos-ui-sdk\";\nimport { useCallback, type ReactElement } from \"react\";\nimport { Icon, Text } from \"../../../../atoms\";\nimport { useTreeListContext } from \"../common/hooks\";\nimport type { BranchTemplateProps, TreeListItem } from \"../common/types\";\n\nexport const NamedCollapsibleBranch: <T extends TreeListItem = TreeListItem>(\n props: BranchTemplateProps<T>\n) => ReactElement | null = kosComponent(\n ({ children, className, ...branch }) => {\n const { openedBranches, toggleBranch } = useTreeListContext();\n\n const open = openedBranches.includes(branch.id);\n\n const onBranchLabelClick = useCallback(() => {\n toggleBranch(branch);\n }, [branch, toggleBranch]);\n\n return (\n <BranchContainer className={className} key={branch.id}>\n <LabelContainer\n className=\"label-container\"\n data-open={open}\n onClick={onBranchLabelClick}\n >\n {open ? (\n <Icon iconId=\"CaretDown\" size=\"xxsm\" />\n ) : (\n <Icon iconId=\"CaretRight\" size=\"xxsm\" />\n )}\n <Text variant=\"body\" bold>\n {branch.name}\n </Text>\n </LabelContainer>\n\n <InnerContainer className=\"inner-container\">\n {open ? (\n <ListContainer className=\"list-container\">{children}</ListContainer>\n ) : null}\n </InnerContainer>\n </BranchContainer>\n );\n }\n);\n\nconst BranchContainer = styled.div`\n display: flex;\n flex-direction: column;\n\n &.isNotRoot {\n padding-left: 12px;\n }\n`;\n\nconst LabelContainer = styled.div`\n align-items: center;\n column-gap: 4px;\n cursor: pointer;\n display: flex;\n flex: 0;\n min-height: 22px;\n padding-right: 12px;\n`;\n\nconst InnerContainer = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nconst ListContainer = styled.div`\n display: flex;\n flex-direction: column;\n row-gap: 4px;\n`;\n","import styled from \"@emotion/styled\";\nimport {\n CSSProperties,\n memo,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n type ReactNode,\n} from \"react\";\n\nexport interface VirtualListProps {\n autoScrollToBottom?: boolean;\n className?: string;\n itemCount: number;\n itemHeight: number;\n onBottom?: () => void;\n overscanAmount?: number;\n renderRow: (index: number, style: CSSProperties) => React.ReactNode;\n}\n\nexport const VirtualList = memo(\n ({\n autoScrollToBottom = false,\n className,\n itemCount,\n itemHeight,\n onBottom,\n overscanAmount,\n renderRow,\n }: VirtualListProps) => {\n const [scrollTop, setScrollTop] = useState(0);\n const [height, setHeight] = useState(0);\n const containerRef = useRef<HTMLDivElement>(null);\n const listRef = useRef<HTMLDivElement>(null);\n\n const totalHeight = itemCount * itemHeight;\n\n const visibleCount = Math.ceil(height / itemHeight);\n\n const startIdx = Math.max(\n Math.floor(scrollTop / itemHeight - (overscanAmount ?? 0)),\n 0\n );\n\n const endIdx = Math.min(\n itemCount - 1,\n startIdx + visibleCount + (overscanAmount ?? 0)\n );\n\n const handleScroll = (e: React.UIEvent<HTMLDivElement>) => {\n setScrollTop(e.currentTarget.scrollTop);\n };\n\n useLayoutEffect(() => {\n const updateHeight = () => {\n if (containerRef.current) {\n setHeight(containerRef.current.clientHeight);\n }\n };\n\n updateHeight();\n window.addEventListener(\"resize\", updateHeight);\n\n return () => window.removeEventListener(\"resize\", updateHeight);\n }, []);\n\n useEffect(() => {\n if (autoScrollToBottom && listRef.current) {\n listRef.current.scrollTop = listRef.current.scrollHeight;\n }\n }, [itemCount, autoScrollToBottom]);\n\n const items: ReactNode[] = [];\n\n for (let i = startIdx; i <= endIdx; i++) {\n items.push(\n renderRow(i, {\n top: i * itemHeight,\n height: itemHeight,\n position: \"absolute\",\n width: \"100%\",\n })\n );\n }\n\n useEffect(() => {\n const handleScroll = () => {\n const list = listRef.current;\n if (!list) return;\n\n const isAtBottom =\n list.scrollHeight - list.scrollTop <= list.clientHeight + itemHeight;\n\n if (!autoScrollToBottom && isAtBottom) {\n onBottom?.();\n }\n };\n\n const list = listRef.current;\n if (list) {\n list.addEventListener(\"scroll\", handleScroll);\n }\n\n return () => {\n if (list) {\n list.removeEventListener(\"scroll\", handleScroll);\n }\n };\n }, [autoScrollToBottom, itemHeight, onBottom]);\n\n return (\n <StyledVirtualList ref={containerRef}>\n <ListOuter\n ref={listRef}\n style={{ height: height }}\n onScroll={handleScroll}\n className={className}\n >\n <ListInner style={{ height: totalHeight }}>{items}</ListInner>\n </ListOuter>\n </StyledVirtualList>\n );\n }\n);\n\nconst StyledVirtualList = styled.div`\n height: 100%;\n width: 100%;\n overflow-y: hidden;\n position: relative;\n`;\n\nconst ListOuter = styled.div`\n overflow-y: auto;\n width: 100%;\n position: relative;\n`;\n\nconst ListInner = styled.div`\n position: relative;\n width: 100%;\n`;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { kosComponent } from \"@kosdev-code/kos-ui-sdk\";\n\nimport { useCallback } from \"react\";\nimport { VirtualList, type VirtualListProps } from \"../../virtual-list\";\nimport { ListContextProvider } from \"../common/contexts\";\nimport { isComponentFactory } from \"../common/helpers\";\nimport { ListDataProvider, ListItem, type ListProps } from \"../common/types\";\nimport { useLoadDataProvider } from \"../hooks/useLoadDataProvider\";\n\nexport type VirtualizedListProps<\n T extends ListItem,\n P extends ListDataProvider<T> = ListDataProvider<T>\n> = Omit<VirtualListProps, \"renderRow\" | \"itemCount\"> &\n Omit<ListProps<T, P>, \"itemListRenderer\">;\n\nexport const VirtualizedList = kosComponent(\n <\n T extends ListItem,\n P extends ListDataProvider<T> = ListDataProvider<T>,\n C extends Record<string, any> = Record<string, any>\n >({\n dataProvider,\n ItemTemplate,\n onListItemAction,\n onInit,\n emptyState,\n ...virtualProps\n }: VirtualizedListProps<T, P>) => {\n const loaded = useLoadDataProvider<T>(dataProvider, onInit);\n\n const renderRow: VirtualListProps[\"renderRow\"] = useCallback(\n (index, style) => {\n const item = dataProvider?.items.find((_, i) => i === index);\n\n if (item) {\n const Template = isComponentFactory<T>(ItemTemplate)\n ? ItemTemplate.build(item)\n : ItemTemplate;\n\n return (\n <Template\n key={item.id}\n data-key={item.id}\n style={style}\n {...item}\n onListItemAction={onListItemAction}\n />\n );\n }\n\n return null;\n },\n [ItemTemplate, dataProvider?.items, onListItemAction]\n );\n\n return (\n <ListContextProvider<T, C> dataProvider={dataProvider || undefined}>\n {!loaded ? null : dataProvider?.items.length === 0 && !!emptyState ? (\n emptyState\n ) : (\n <VirtualList\n itemCount={dataProvider?.items.length ?? 0}\n renderRow={renderRow}\n {...virtualProps}\n />\n )}\n </ListContextProvider>\n );\n }\n);\n","import { kosComponent } from \"@kosdev-code/kos-ui-sdk\";\nimport {\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type ReactElement,\n} from \"react\";\nimport { SelectListContext } from \"../common/contexts\";\nimport type { ListDataProvider, ListItem } from \"../common/types\";\nimport type { SelectListProps } from \"../select-list\";\nimport {\n VirtualizedList,\n type VirtualizedListProps,\n} from \"../virtualized-list\";\n\nexport const VirtualizedSelectList: <\n T extends ListItem = ListItem,\n P extends ListDataProvider<T> = ListDataProvider<T>\n>(\n props: VirtualizedListProps<T, P> & SelectListProps<T>\n) => ReactElement | null = kosComponent(\n ({\n isSingleSelect = true,\n onSelect,\n selected,\n disabled,\n autoSelectFirstItem,\n dataProvider,\n getFirstItem,\n ...listProps\n }) => {\n const [internalSelected, setInternalSelected] = useState<string[]>(\n selected ?? []\n );\n\n const selectedRef = useRef<string[]>(internalSelected ?? []);\n\n useLayoutEffect(() => {\n selectedRef.current = internalSelected;\n }, [internalSelected]);\n\n useEffect(() => {\n setInternalSelected(selected ?? []);\n }, [selected]);\n\n const toggleSelection = useCallback(\n (itemId: string) => {\n onSelect(\n itemId,\n selectedRef.current.includes(itemId) ? \"unselected\" : \"selected\"\n );\n setInternalSelected((prev) => {\n if (isSingleSelect) {\n return [itemId];\n }\n if (prev.includes(itemId)) {\n return prev.filter((id) => id !== itemId);\n }\n return [...prev, itemId];\n });\n },\n [isSingleSelect, onSelect]\n );\n\n const isSelected = useCallback(\n (itemId: string) => selectedRef.current.includes(itemId),\n []\n );\n\n const value = useMemo(() => {\n return {\n isSelected,\n selected: internalSelected,\n toggleSelection,\n isDisabled: !!disabled,\n };\n }, [isSelected, internalSelected, toggleSelection, disabled]);\n\n useEffect(() => {\n if (\n autoSelectFirstItem &&\n dataProvider?.items &&\n selectedRef.current.length === 0\n ) {\n let firstItemId: string | undefined = undefined;\n if (getFirstItem) {\n firstItemId = getFirstItem(dataProvider.items)?.id;\n } else {\n firstItemId = dataProvider.items[0]?.id;\n }\n\n if (firstItemId) {\n toggleSelection(firstItemId);\n }\n }\n }, [\n autoSelectFirstItem,\n dataProvider?.items,\n getFirstItem,\n toggleSelection,\n ]);\n\n return (\n <SelectListContext.Provider value={value}>\n <VirtualizedList dataProvider={dataProvider} {...listProps} />\n </SelectListContext.Provider>\n );\n }\n);\n","import styled from \"@emotion/styled\";\nimport { getComponentTokenHelpers } from \"../../../../../styles\";\n\nconst [ct] = getComponentTokenHelpers([\"modal\"]);\n\nexport const ModalWrapper = styled.div`\n width: fit-content;\n height: fit-content;\n display: flex;\n align-items: flex-start;\n justify-content: flex-start;\n flex-direction: column;\n background-color: ${ct(\"background-color\")};\n`;\n\nexport const ModalHeader = styled.div`\n padding: ${ct(\"headerPadding\")};\n column-gap: ${ct(\"headerGap\")};\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n border-bottom: ${ct(\"border-width\")} solid ${ct(\"border-color\")};\n`;\n\nexport const ModalContent = styled.div`\n padding: ${ct(\"contentYPadding\")} ${ct(\"contentXPadding\")};\n width: fit-content;\n`;\n\nexport const ModalFooter = styled.div`\n padding: ${ct(\"footerYPadding\")} ${ct(\"footerXPadding\")};\n border-top: ${ct(\"border-width\")} solid ${ct(\"border-color\")};\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n`;\n\nexport const BaseModalContent = styled.div`\n width: ${ct(\"base-content-width\")};\n display: flex;\n align-items: flex-start;\n justify-content: flex-start;\n flex-direction: column;\n`;\n","import { forwardRef, type ComponentType, type ReactNode } from \"react\";\nimport {\n ModalWrapper,\n ModalHeader,\n ModalContent,\n ModalFooter,\n} from \"../styles/modal.styles\";\n\nexport interface ModalLayoutProps {\n header: ReactNode;\n content: ReactNode;\n footer: ReactNode;\n footerWrapper?: ComponentType;\n headerWrapper?: ComponentType;\n contentWrapper?: ComponentType;\n}\n\nexport const ModalLayout = forwardRef<HTMLDivElement, ModalLayoutProps>(\n (\n { header, footer, content, footerWrapper, headerWrapper, contentWrapper },\n ref\n ) => {\n const Header = headerWrapper ?? ModalHeader;\n const Content = contentWrapper ?? ModalContent;\n const Footer = footerWrapper ?? ModalFooter;\n return (\n <ModalWrapper ref={ref}>\n <Header>{header}</Header>\n <Content>{content}</Content>\n <Footer>{footer}</Footer>\n </ModalWrapper>\n );\n }\n);\n","import { forwardRef, useCallback, useMemo, type ReactNode } from \"react\";\nimport {\n Button,\n Icon,\n Text,\n type IconColors,\n type IconIds,\n} from \"../../../atoms\";\nimport type { ButtonVariant } from \"../../../atoms/button/button\";\nimport { useDialogContext } from \"../../../atoms/dialog\";\nimport { ModalLayout } from \"../common/components/modal-layout\";\n\nexport type StatusModalLevel = \"warn\" | \"success\" | \"error\" | \"info\";\n\nexport interface StatusModalProps {\n level?: StatusModalLevel;\n headerText: string;\n content: ReactNode;\n onAccept?: VoidFunction;\n acceptButtonText?: string;\n acceptButtonVariant?: ButtonVariant;\n}\n\nexport const StatusModal = forwardRef<HTMLDivElement, StatusModalProps>(\n (\n {\n level,\n headerText,\n content,\n acceptButtonVariant,\n acceptButtonText,\n onAccept,\n },\n ref\n ) => {\n const iconConfig = useMemo<\n { iconId: IconIds; color: IconColors } | undefined\n >(() => {\n if (level === \"error\")\n return { iconId: \"ExclamationCircle\", color: \"red\" };\n if (level === \"warn\") return { iconId: \"Warning\", color: \"orange\" };\n if (level === \"success\") return { iconId: \"CheckCircle\", color: \"green\" };\n if (level === \"info\") return { iconId: \"InfoCircle\", color: \"blue\" };\n return undefined;\n }, [level]);\n\n const { setOpen } = useDialogContext();\n\n const handleAccept = useCallback(() => {\n if (onAccept) onAccept();\n setOpen(false);\n }, [setOpen, onAccept]);\n\n return (\n <ModalLayout\n ref={ref}\n header={\n <>\n {!!iconConfig && (\n <Icon iconId={iconConfig.iconId} color={iconConfig.color} />\n )}\n <Text variant=\"h2\" color=\"dark\">\n {headerText}\n </Text>\n </>\n }\n content={content}\n footer={\n <Button\n onClick={handleAccept}\n variant={acceptButtonVariant ?? \"primary\"}\n text={acceptButtonText ?? \"Okay\"}\n />\n }\n />\n );\n }\n);\n","import {\n forwardRef,\n useCallback,\n type ComponentType,\n type ReactNode,\n} from \"react\";\nimport { useDialogContext } from \"../../../atoms/dialog\";\nimport {\n Text,\n Button,\n type IconIds,\n type IconColors,\n Icon,\n} from \"../../../atoms\";\nimport styled from \"@emotion/styled\";\nimport { getComponentTokenHelpers } from \"../../../../styles\";\nimport type { ButtonVariant } from \"../../../atoms/button/button\";\nimport { ModalLayout } from \"../common/components/modal-layout\";\nimport { ModalFooter } from \"../common/styles/modal.styles\";\n\nconst [ct] = getComponentTokenHelpers([\"modal\"]);\n\nexport interface ConfirmModalProps {\n onConfirm: (closeModal: () => void) => void;\n headerText: string;\n content: ReactNode;\n headerIcon?: IconIds;\n headerIconColor?: IconColors;\n confirmText?: string;\n cancelText?: string;\n onCancel?: VoidFunction;\n confirmButtonVariant?: ButtonVariant;\n cancelButtonVariant?: ButtonVariant;\n confirmDisabled?: boolean;\n cancelDisabled?: boolean;\n contentWrapper?: ComponentType;\n}\n\nexport const ConfirmModal = forwardRef<HTMLDivElement, ConfirmModalProps>(\n (\n {\n onConfirm,\n onCancel,\n headerText,\n confirmText,\n cancelText,\n content,\n confirmButtonVariant,\n cancelButtonVariant,\n confirmDisabled,\n headerIcon,\n headerIconColor,\n contentWrapper,\n cancelDisabled,\n },\n ref\n ) => {\n const { setOpen } = useDialogContext();\n\n const handleConfirm = useCallback(() => {\n onConfirm(() => setOpen(false));\n }, [onConfirm, setOpen]);\n\n const handleCancel = useCallback(() => {\n if (onCancel) onCancel();\n setOpen(false);\n }, [onCancel, setOpen]);\n\n return (\n <ModalLayout\n ref={ref}\n header={\n <>\n {!!headerIcon && (\n <Icon iconId={headerIcon} color={headerIconColor ?? \"black\"} />\n )}\n <Text variant=\"h2\" color=\"dark\">\n {headerText}\n </Text>\n </>\n }\n contentWrapper={contentWrapper}\n content={content}\n footerWrapper={ConfirmModalFooter}\n footer={\n <>\n <Button\n text={cancelText ?? \"Cancel\"}\n onClick={handleCancel}\n disabled={cancelDisabled}\n variant={cancelButtonVariant ?? \"borderless\"}\n />\n <Button\n onClick={handleConfirm}\n variant={confirmButtonVariant ?? \"primary\"}\n text={confirmText ?? \"Confirm\"}\n disabled={confirmDisabled}\n />\n </>\n }\n />\n );\n }\n);\n\nconst ConfirmModalFooter = styled(ModalFooter)`\n column-gap: ${ct(\"footerGap\")};\n`;\n","import { memo } from \"react\";\nimport { Icon, Text } from \"../../../../atoms\";\n\ninterface ConfirmDeleteHeaderProps {\n headerText: string;\n}\n\nexport const ConfirmDeleteHeader = memo(\n ({ headerText }: ConfirmDeleteHeaderProps) => (\n <>\n <Icon iconId=\"ExclamationCircle\" color=\"red\" size=\"lrg\" />\n <Text variant=\"h2\" color=\"dark\">\n {headerText}\n </Text>\n </>\n )\n);\n","import styled from \"@emotion/styled\";\nimport { memo, useCallback, type ReactNode } from \"react\";\nimport { Text } from \"../../../../atoms\";\nimport { FormInput, type FieldError } from \"../../../form\";\n\ninterface ConfirmDeleteContentProps {\n contentText: ReactNode;\n compareText: string;\n errorText?: string;\n}\n\nexport const ConfirmDeleteContent = memo(\n ({ contentText, compareText, errorText }: ConfirmDeleteContentProps) => {\n const handleError = useCallback(\n (formError: FieldError) => {\n if (formError.message && formError.message !== \"\") {\n return formError.message;\n }\n return errorText ?? \"That does not match.\";\n },\n [errorText]\n );\n\n const validateText = useCallback(\n (value: string) => value === compareText,\n [compareText]\n );\n\n return (\n <StyledConfirmDeleteContent>\n <Text variant=\"body\" color=\"dark\">\n {contentText}\n </Text>\n <FormInput<{ matchText: string }, \"matchText\">\n name=\"matchText\"\n handleError={handleError}\n validate={validateText}\n />\n </StyledConfirmDeleteContent>\n );\n }\n);\n\nconst StyledConfirmDeleteContent = styled.div`\n width: 288px;\n display: flex;\n align-items: flex-start;\n justify-content: flex-start;\n flex-direction: column;\n row-gap: 8px;\n`;\n","import { memo, useCallback } from \"react\";\n\nimport { useDialogContext } from \"../../../../atoms/dialog\";\nimport { Button } from \"../../../../atoms\";\nimport { FormSubmit, type SubmitHandler } from \"../../../form\";\nimport type { ConfirmDeleteFormData } from \"../common/types\";\n\ninterface ConfirmDeleteFooterProps {\n onSubmit: SubmitHandler<ConfirmDeleteFormData>;\n}\n\nexport const ConfirmDeleteFooter = memo(\n ({ onSubmit }: ConfirmDeleteFooterProps) => {\n const { setOpen } = useDialogContext();\n\n const onCancel = useCallback(() => {\n setOpen(false);\n }, [setOpen]);\n\n return (\n <>\n <Button\n type=\"button\"\n text=\"Cancel\"\n onClick={onCancel}\n variant=\"borderless\"\n />\n <FormSubmit onSubmit={onSubmit} variant=\"primary\" text=\"Delete\" />\n </>\n );\n }\n);\n","import { forwardRef, useCallback, type ReactNode } from \"react\";\nimport { ModalLayout } from \"../common/components/modal-layout\";\nimport { ConfirmDeleteHeader } from \"./components/confirm-delete-header\";\nimport { ConfirmDeleteContent } from \"./components/confirm-delete-content\";\nimport { useDialogContext } from \"../../../atoms/dialog\";\nimport styled from \"@emotion/styled\";\nimport { ConfirmDeleteFooter } from \"./components/confirm-delete-footer\";\nimport { Form, type SubmitHandler } from \"../../form\";\nimport type { ConfirmDeleteFormData } from \"./common/types\";\n// eslint-disable-next-line no-restricted-imports\nimport type { UseFormSetError } from \"react-hook-form\";\n\nexport interface ConfirmDeleteModalProps {\n compareText: string;\n headerText: string;\n contentText: ReactNode;\n onConfirm: (\n data: ConfirmDeleteFormData,\n closeModal: () => void,\n setError: UseFormSetError<ConfirmDeleteFormData>\n ) => void;\n errorText?: string;\n}\n\nconst DEFAULT_VALUES: ConfirmDeleteFormData = {\n matchText: \"\",\n};\n\nexport const ConfirmDeleteModal = forwardRef<\n HTMLDivElement,\n ConfirmDeleteModalProps\n>(({ compareText, headerText, contentText, errorText, onConfirm }, ref) => {\n const { setOpen } = useDialogContext();\n\n const onSubmit: SubmitHandler<ConfirmDeleteFormData> = useCallback(\n (data, setError) => {\n onConfirm(data, () => setOpen(false), setError);\n },\n [onConfirm, setOpen]\n );\n\n return (\n <ConfirmDeleteForm\n onSubmit={onSubmit}\n mode=\"onChange\"\n delayError={400}\n defaultValues={DEFAULT_VALUES}\n >\n <ModalLayout\n ref={ref}\n header={<ConfirmDeleteHeader headerText={headerText} />}\n content={\n <ConfirmDeleteContent\n compareText={compareText}\n contentText={contentText}\n errorText={errorText}\n />\n }\n footer={<ConfirmDeleteFooter onSubmit={onSubmit} />}\n />\n </ConfirmDeleteForm>\n );\n});\n\nconst ConfirmDeleteForm = styled(Form<ConfirmDeleteFormData>)`\n height: fit-content;\n width: fit-content;\n`;\n","/* eslint-disable no-restricted-imports */\nimport {\n ReactNode,\n useCallback,\n type ComponentType,\n type ForwardedRef,\n} from \"react\";\nimport {\n FormProvider,\n useForm,\n type FieldValues,\n type SubmitHandler,\n type UseFormReset,\n type UseFormSetError,\n} from \"react-hook-form\";\nimport { Button, type ButtonVariant } from \"../../../atoms/button/button\";\nimport { useDialogContext } from \"../../../atoms/dialog\";\nimport { forwardRefWithGeneric } from \"../../../utility/forward-ref-with-generic\";\nimport type { SubmitHandler as FormSubmitHandler } from \"../../form\";\nimport { FormSubmit, type FormProps } from \"../../form\";\nimport {\n ModalContent,\n ModalFooter,\n ModalHeader,\n ModalWrapper,\n} from \"../common/styles/modal.styles\";\n\ninterface ModalSubmitArgs<T extends FieldValues = FieldValues> {\n data: T;\n setError: UseFormSetError<T>;\n closeModal: () => void;\n resetForm: UseFormReset<T>;\n}\n\nexport type ModalSubmitHandler<T extends FieldValues = FieldValues> = (\n args: ModalSubmitArgs<T>\n) => void;\n\nexport interface FormModalProps<T extends FieldValues = FieldValues>\n extends Omit<FormProps<T>, \"onSubmit\" | \"onRootErrorChange\" | \"children\"> {\n header: ReactNode;\n submitText?: string;\n cancelText?: string;\n content: ReactNode;\n enabledIfClean?: boolean;\n onCancel?: (reset: UseFormReset<T>) => void;\n onSubmit: ModalSubmitHandler<T>;\n submitButtonVariant?: ButtonVariant;\n cancelButtonVariant?: ButtonVariant;\n ContentWrapper?: ComponentType;\n}\n\nconst _FormModal = <T extends FieldValues = FieldValues>(\n {\n className,\n defaultValues,\n header,\n submitText,\n cancelText,\n onCancel,\n enabledIfClean,\n onSubmit,\n content,\n submitButtonVariant,\n cancelButtonVariant,\n variant = \"submit\",\n ContentWrapper,\n disabled,\n ...formOptions\n }: FormModalProps<T>,\n ref: ForwardedRef<HTMLDivElement>\n) => {\n const form = useForm<T>({\n shouldUnregister: true,\n defaultValues,\n disabled,\n ...formOptions,\n mode: variant === \"blur\" ? \"onBlur\" : formOptions.mode,\n });\n\n const { setOpen } = useDialogContext();\n\n const { setError, reset } = form;\n\n const _onSubmit: SubmitHandler<T> = useCallback(\n (data) => {\n onSubmit({\n data,\n closeModal: () => setOpen(false),\n setError,\n resetForm: reset,\n });\n },\n [onSubmit, reset, setError, setOpen]\n );\n\n const handleCancel = useCallback(() => {\n onCancel?.(reset);\n setOpen(false);\n }, [onCancel, reset, setOpen]);\n\n const onButtonSubmit: FormSubmitHandler<T> = useCallback(\n (data) => _onSubmit(data),\n [_onSubmit]\n );\n\n const Content = ContentWrapper ?? ModalContent;\n\n return (\n <FormProvider {...form}>\n <ModalWrapper\n ref={ref}\n as=\"form\"\n className={className}\n onSubmit={variant === \"blur\" ? undefined : form.handleSubmit(_onSubmit)}\n onBlur={variant === \"blur\" ? form.handleSubmit(_onSubmit) : undefined}\n >\n <ModalHeader>{header}</ModalHeader>\n <Content>{content}</Content>\n <ModalFooter>\n <Button\n text={cancelText ?? \"Cancel\"}\n onClick={handleCancel}\n type=\"button\"\n variant={cancelButtonVariant ?? \"borderless\"}\n />\n {variant !== \"blur\" && (\n <FormSubmit<T>\n onSubmit={onButtonSubmit}\n variant={submitButtonVariant ?? \"primary\"}\n text={submitText ?? \"Submit\"}\n enabledIfClean={enabledIfClean}\n disabled={disabled}\n />\n )}\n </ModalFooter>\n </ModalWrapper>\n </FormProvider>\n );\n};\n\nexport const FormModal = forwardRefWithGeneric(_FormModal);\n","import { type ReactNode } from \"react\";\nimport { StatusModal } from \"./status-modal/status-modal\";\nimport { Dialog, DialogContent, DialogTrigger } from \"../../atoms/dialog\";\nimport { ConfirmModal } from \"./confirm-modal/confirm-modal\";\nimport { css } from \"@emotion/react\";\nimport { getComponentTokenHelpers } from \"../../../styles\";\nimport { ModalLayout } from \"./common/components/modal-layout\";\nimport type { ModalProps, ModalType } from \"./types\";\nimport { ConfirmDeleteModal } from \"./confirm-delete-modal\";\n// eslint-disable-next-line no-restricted-imports\nimport type { FieldValues } from \"react-hook-form\";\nimport { FormModal } from \"./form-modal\";\n\nconst [ct] = getComponentTokenHelpers([\"modal\"]);\n\nconst DISMISS_OPTIONS = {\n escapeKey: true,\n outsidePress: false,\n bubbles: false,\n} as const;\n\nexport function Modal<T extends ModalType, F extends FieldValues>(\n props: ModalProps<T, F>\n) {\n const {\n type,\n open,\n defaultOpen,\n onOpenChange,\n children,\n initialFocus,\n ...rest\n } = props;\n\n const Inner =\n type === \"confirm\"\n ? ConfirmModal\n : type === \"status\"\n ? StatusModal\n : type === \"confirm-delete\"\n ? ConfirmDeleteModal\n : type === \"form\"\n ? FormModal\n : ModalLayout;\n\n return (\n <Dialog\n dismissOptions={DISMISS_OPTIONS}\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n >\n <DialogContent\n initialFocus={initialFocus}\n OverlayStyles={ModalOverlayStyles}\n trapFocus\n >\n {/* @ts-expect-error: TODO: Is it possible to cascade these types properly? */}\n <Inner {...rest} />\n </DialogContent>\n {!!children && children}\n </Dialog>\n );\n}\n\ninterface ModalTriggerProps {\n children: ReactNode;\n}\n\nexport const ModalTrigger = ({ children }: ModalTriggerProps) => (\n <DialogTrigger>{children}</DialogTrigger>\n);\n\nexport const ModalOverlayStyles = css`\n background: ${ct(\"overlay-background\")};\n display: grid;\n place-items: center;\n z-index: 2;\n`;\n","import styled from \"@emotion/styled\";\nimport { getComponentTokenHelpers } from \"../../../../styles\";\n\nconst [ct] = getComponentTokenHelpers([\"named-section-header\"]);\n\nexport const NamedSectionHeaderWrapper = styled.div`\n align-items: flex-start;\n background-color: ${ct(\"bg\")};\n border-bottom: ${ct(\"border-width\")} solid ${ct(\"border-color\")};\n border-radius: ${ct(\"border-radius\")} ${ct(\"border-radius\")} 0px 0px;\n display: flex;\n padding: ${ct(\"padding\")};\n column-gap: ${ct(\"gap\")};\n &.isCollapsed {\n border-bottom-width: 0px;\n }\n`;\n","import { memo, useCallback, type MouseEvent, type ReactNode } from \"react\";\nimport { IconButton, useCollapsibleContext } from \"../../../atoms\";\nimport { NamedSectionHeaderWrapper } from \"../common/style\";\nimport cx from \"classnames\";\ninterface CollapsibleNamedSectionHeaderProps {\n children: ReactNode;\n}\n\nexport const CollapsibleNamedSectionHeader = memo(\n ({ children }: CollapsibleNamedSectionHeaderProps) => {\n const { setOpen, open } = useCollapsibleContext();\n\n const onClick = useCallback(\n (e: MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n setOpen(!open);\n },\n [open, setOpen]\n );\n\n return (\n <NamedSectionHeaderWrapper\n className={cx(\"header-wrapper\", { isCollapsed: open })}\n >\n <IconButton\n iconId={open ? \"CaretDown\" : \"CaretUp\"}\n onClick={onClick}\n size=\"xsm\"\n color=\"black\"\n />\n {children}\n </NamedSectionHeaderWrapper>\n );\n }\n);\n","import { ClassNames } from \"@emotion/react\";\nimport styled from \"@emotion/styled\";\nimport { getComponentTokenHelpers } from \"../../../styles\";\nimport {\n ReactNode,\n useCallback,\n useRef,\n type ComponentType,\n type MouseEvent,\n} from \"react\";\nimport { Collapsible, CollapsibleContent } from \"../../atoms\";\nimport { CollapsibleNamedSectionHeader } from \"./components/collapsible-named-section-header\";\nimport { NamedSectionHeaderWrapper } from \"./common/style\";\n\nconst [ct] = getComponentTokenHelpers([\"named-section\"]);\n\ntype NamedSectionVariant = \"display\" | \"selectable\" | \"scrollable\";\n\nexport interface BaseNamedSectionProps<T extends NamedSectionVariant> {\n children: ReactNode;\n isCollapsible?: boolean;\n header: ReactNode;\n className?: string;\n ContentWrapper?: ComponentType;\n variant: T;\n disabled?: boolean;\n}\n\nexport interface SelectableProps {\n isSelected: boolean;\n onClick: VoidFunction;\n}\n\ntype SelectableNamedSectionProps = BaseNamedSectionProps<\"selectable\"> &\n SelectableProps;\n\ntype DisplayNamedSectionProps = BaseNamedSectionProps<\"display\" | \"scrollable\">;\n\ntype NamedSectionProps<T extends NamedSectionVariant> = T extends \"selectable\"\n ? SelectableNamedSectionProps\n : DisplayNamedSectionProps;\n\nconst isSelectable = <T extends NamedSectionVariant>(\n props: NamedSectionProps<T>\n //@ts-expect-error Not actually an error.\n): props is SelectableNamedSectionProps => props.variant === \"selectable\";\n\nexport const NamedSection = <T extends NamedSectionVariant>(\n props: NamedSectionProps<T>\n) => {\n const { variant, className, children, header, isCollapsible } = props;\n const ref = useRef<HTMLDivElement>(null);\n\n const [disabled, isSelected, onClick] = isSelectable(props)\n ? [props.disabled, props.isSelected, props.onClick]\n : [props.disabled, false, undefined];\n\n const Content = props.ContentWrapper ?? NamedSectionContent;\n\n const _onClick = useCallback(\n (e: MouseEvent<HTMLDivElement>) => {\n if (!!onClick && ref.current && ref.current.contains(e.target as Node)) {\n onClick();\n }\n },\n [onClick]\n );\n\n return (\n <ClassNames>\n {({ cx }) => (\n <NamedSectionContainer\n data-variant={variant}\n className={cx(className, { disabled, isSelected })}\n onClick={_onClick}\n ref={ref}\n >\n {isCollapsible ? (\n <Collapsible defaultOpen={true}>\n <CollapsibleNamedSectionHeader>\n {header}\n </CollapsibleNamedSectionHeader>\n <CollapsibleContent>\n <Content>{children}</Content>\n </CollapsibleContent>\n </Collapsible>\n ) : (\n <>\n <NamedSectionHeaderWrapper className=\"header-wrapper\">\n {header}\n </NamedSectionHeaderWrapper>\n <Content>{children}</Content>\n </>\n )}\n </NamedSectionContainer>\n )}\n </ClassNames>\n );\n};\n\nconst NamedSectionContainer = styled.div`\n border-color: ${ct(\"border-color\")};\n border-radius: ${ct(\"border-radius\")};\n border-style: solid;\n border-width: ${ct(\"border-width\")};\n display: flex;\n flex-direction: column;\n width: 100%;\n transition: opacity 0.125s ease-in-out;\n &.disabled {\n opacity: 0.5;\n }\n &[data-variant=\"selectable\"] {\n &.isSelected {\n outline-color: ${ct(\"selected-border-color\")};\n outline-width: ${ct(\"selected-border-width\")};\n outline-offset: calc(-1.5 * ${ct(\"selected-border-width\")});\n }\n cursor: pointer;\n outline-color: transparent;\n outline-offset: calc(-1.5 * ${ct(\"hover-border-width\")});\n outline-style: solid;\n outline-width: ${ct(\"hover-border-width\")};\n\n &:hover {\n opacity: 1;\n outline-color: ${ct(\"selected-border-color\")};\n }\n }\n &[data-variant=\"scrollable\"] {\n overflow: auto;\n .header-wrapper {\n position: sticky;\n top: 0;\n }\n }\n`;\n\nconst NamedSectionContent = styled.div`\n display: flex;\n width: 100%;\n`;\n","import { memo, type HTMLAttributes, type ReactNode } from \"react\";\nimport styled from \"@emotion/styled\";\nimport { getComponentTokenHelpers } from \"../../../../styles\";\nimport { Text } from \"../../../atoms\";\n\nconst [ct] = getComponentTokenHelpers([\"named-section-header\"]);\n\ninterface NamedSectionHeaderProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"prefix\"> {\n name: string;\n description?: string;\n prefix?: ReactNode;\n suffix?: ReactNode;\n children?: ReactNode;\n}\n\nexport const NamedSectionHeader = memo(\n ({\n name,\n description,\n prefix,\n suffix,\n children,\n ...htmlProps\n }: NamedSectionHeaderProps) => (\n <StyledNamedSectionHeader\n {...htmlProps}\n className={description ? \"hasDesc\" : undefined}\n >\n <NameAndDesc>\n <NameWrapper>\n {prefix}\n <Text color=\"dark\" bold variant=\"body\">\n {name}\n </Text>\n {suffix}\n </NameWrapper>\n {!!description && (\n <Text color=\"grey\" variant=\"small\">\n {description}\n </Text>\n )}\n </NameAndDesc>\n {!!children && <RightSide>{children}</RightSide>}\n </StyledNamedSectionHeader>\n )\n);\n\nconst StyledNamedSectionHeader = styled.div`\n width: 100%;\n display: flex;\n align-items: center;\n column-gap: ${ct(\"gap\")};\n justify-content: space-between;\n &.hasDesc {\n align-items: flex-start;\n }\n`;\n\nconst NameAndDesc = styled.div`\n display: flex;\n align-items: flex-start;\n justify-content: center;\n flex-direction: column;\n row-gap: ${ct(\"row-gap\")};\n`;\n\nconst NameWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: flex-start;\n column-gap: ${ct(\"row-gap\")};\n`;\n\nconst RightSide = styled.div`\n display: flex;\n align-items: center;\n justify-content: flex-end;\n row-gap: ${ct(\"row-gap\")};\n`;\n","import styled from \"@emotion/styled\";\nimport { getComponentTokenHelpers } from \"../../../styles\";\nimport { ReactNode } from \"react\";\nimport { Text } from \"../../atoms/text\";\n\nconst [getComponentToken] = getComponentTokenHelpers([\n \"image-config-page-header\",\n]);\n\nconst HeaderContainer = styled.div`\n align-items: center;\n background: ${getComponentToken(\"bg\")};\n display: flex;\n gap: ${getComponentToken(\"gap\")};\n padding: 0 0 ${getComponentToken(\"padding-bottom\")} 0;\n width: 100%;\n`;\n\nconst TextContainer = styled.div`\n display: flex;\n flex-direction: column;\n flex: 1;\n gap: ${getComponentToken(\"title-gap\")};\n`;\n\nexport interface HeaderProps {\n title: string;\n description?: string;\n action?: ReactNode;\n className?: string;\n}\n\nexport const PageHeader = ({\n action,\n description,\n title,\n ...props\n}: HeaderProps) => (\n <HeaderContainer {...props}>\n <TextContainer>\n <Text variant={\"h1\"}>{title}</Text>\n {description && <Text variant={\"body\"}>{description}</Text>}\n </TextContainer>\n {action}\n </HeaderContainer>\n);\n","import { createContext, useContext } from \"react\";\n\nexport interface SelectViewListContextValue {\n selected: string | undefined;\n viewing: string | undefined;\n}\n\nexport const SelectViewListContext =\n createContext<SelectViewListContextValue | null>(null);\n\nexport const useSelectViewListContext = () => {\n const context = useContext(SelectViewListContext);\n\n if (context === null) {\n throw new Error(\n \"Unable to use SelectViewListContext outside of its provider.\"\n );\n }\n\n return context;\n};\n","import styled from \"@emotion/styled\";\nimport { getComponentTokenHelpers } from \"../../../styles\";\nimport { forwardRef, type InputHTMLAttributes } from \"react\";\n\nconst [ct] = getComponentTokenHelpers([\"radio-button\"]);\n\ninterface RadioButtonProps\n extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"type\" | \"value\" | \"checked\" | \"onChange\"\n > {\n checked?: boolean;\n onChange: () => void;\n}\n\nexport const RadioButton = forwardRef<HTMLInputElement, RadioButtonProps>(\n ({ checked, onChange, ...props }, ref) => (\n <StyledRadioButton\n onClick={onChange}\n ref={ref}\n readOnly\n type=\"radio\"\n checked={!!checked}\n {...props}\n />\n )\n);\n\nconst StyledRadioButton = styled.input`\n appearance: none;\n -webkit-appearance: none;\n margin: 0;\n background-color: ${ct(\"background-color\")};\n appearance: none;\n width: ${ct(\"size\")};\n height: ${ct(\"size\")};\n border: ${ct(\"border-width\")} solid ${ct(\"border-color\")};\n border-radius: 50%;\n display: grid;\n place-content: center;\n ::before {\n content: \"\";\n width: ${ct(\"check-size\")};\n height: ${ct(\"check-size\")};\n border-radius: 50%;\n transform: scale(0);\n transition: transform 0.125s ease-in-out;\n background-color: ${ct(\"border-color-checked\")};\n }\n :checked::before {\n transform: scale(1);\n }\n :checked:not(:disabled) {\n border-color: ${ct(\"border-color-checked\")};\n }\n :disabled {\n cursor: not-allowed;\n ::before {\n background-color: ${ct(\"border-color\")};\n }\n background-color: ${ct(\"background-color-disabled\")};\n }\n`;\n","export function getByteString(bytes: number | string) {\n bytes = typeof bytes === \"number\" ? bytes : parseInt(bytes);\n\n if (bytes === 0) {\n return \"0.00 B\";\n }\n\n const e = Math.floor(Math.log(bytes) / Math.log(1024));\n return (\n (bytes / Math.pow(1024, e)).toFixed(2) + \" \" + \" KMGTP\".charAt(e) + \"B\"\n );\n}\n","export const StickyObserver = new IntersectionObserver(\n ([e]) => {\n const isTopOverflow = e.boundingClientRect.top - e.intersectionRect.top < 0;\n const isBottomOverflow =\n e.boundingClientRect.bottom - e.intersectionRect.bottom > 0;\n\n e.target.classList.toggle(\"isStuckTop\", isTopOverflow);\n e.target.classList.toggle(\"isStuckBottom\", isBottomOverflow);\n },\n { threshold: [1] }\n);\n","export const normalizePathDisplay = (\n path: string,\n stripTrailing?: boolean\n): string => {\n if (path === \"\\\\\" || path === \"/\") return \"/\";\n\n if (path.length <= 1) return path;\n\n const _path = path.replace(/\\\\/g, \"/\");\n\n const segments = _path.split(/[/\\\\]+/);\n\n if (stripTrailing !== false && segments[segments.length - 1] === \"\") {\n segments.pop();\n }\n\n return segments.join(\"/\");\n};\n","import { memo, useCallback, useEffect, useRef, type MouseEvent } from \"react\";\nimport styled from \"@emotion/styled\";\nimport { useSelectViewListContext } from \"../common/hooks/use-select-view-list-context\";\nimport { ClassNames } from \"@emotion/react\";\nimport { Icon, Text } from \"../../../atoms\";\nimport { RadioButton } from \"../../../atoms/radio-button\";\nimport { getComponentTokenHelpers } from \"../../../../styles\";\nimport { StickyObserver } from \"../../../../utils\";\nimport type { SelectViewItem } from \"../common/types\";\n\nconst [ct] = getComponentTokenHelpers([\"select-view-list\"]);\n\nexport const SelectViewListItem = memo(\n ({ id, name, icon, onListItemAction, isSelectDisabled }: SelectViewItem) => {\n const { selected, viewing } = useSelectViewListContext();\n\n const radioRef = useRef<HTMLInputElement | null>(null);\n const itemRef = useRef<HTMLDivElement | null>(null);\n const isObservingRef = useRef(false);\n\n const isSelected = selected === id;\n const isViewing = viewing === id;\n\n useEffect(() => {\n if (itemRef.current) {\n if (isSelected) {\n StickyObserver.observe(itemRef.current);\n isObservingRef.current = true;\n } else if (isObservingRef.current) {\n isObservingRef.current = false;\n StickyObserver.unobserve(itemRef.current);\n }\n }\n }, [isSelected]);\n\n const onSelect = useCallback(() => {\n onListItemAction?.(id, \"select\");\n }, [onListItemAction, id]);\n\n const onView = useCallback(\n (e: MouseEvent<HTMLDivElement>) => {\n if (radioRef.current && radioRef.current.contains(e.target as Node)) {\n return;\n }\n onListItemAction?.(id, \"view\");\n },\n [id, onListItemAction]\n );\n\n return (\n <ClassNames>\n {({ cx }) => (\n <Wrapper\n ref={itemRef}\n className={cx({ isSelected })}\n onClick={onView}\n >\n <StyledSelectViewListItem\n className={cx({\n isViewing,\n })}\n >\n <RadioButton\n ref={radioRef}\n checked={isSelected}\n disabled={isSelectDisabled}\n onChange={onSelect}\n />\n <LabelText color=\"dark\" bold={isSelected} variant=\"body\">\n {name}\n {icon}\n </LabelText>\n\n <Icon iconId=\"Right\" color=\"blue\" size=\"sm\" />\n </StyledSelectViewListItem>\n </Wrapper>\n )}\n </ClassNames>\n );\n }\n);\n\nconst Wrapper = styled.div`\n width: 100%;\n display: flex;\n height: auto;\n flex-shrink: 0;\n align-items: center;\n justify-content: flex-start;\n border-bottom: ${ct(\"border-width\")} solid ${ct(\"border-color\")};\n\n &:first-of-type {\n border-top-color: ${ct(\"border-color\")};\n }\n\n :not(:first-of-type):not(.isStuckBottom):has(div.isViewing) {\n border-top-color: ${ct(\"background-color-viewing\")};\n }\n\n &.isSelected {\n position: sticky;\n top: -1px;\n bottom: -1px;\n }\n\n &.isStuckBottom {\n box-shadow: 0px -6px 5px 0px rgba(0, 0, 0, 0.04);\n border-top: ${ct(\"border-width\")} solid ${ct(\"background-color\")};\n border-top-color: ${ct(\"border-color\")};\n }\n\n &.isStuckTop {\n box-shadow: 0px 6px 5px 0px rgba(0, 0, 0, 0.04);\n }\n`;\n\nconst StyledSelectViewListItem = styled.div`\n width: 100%;\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: flex-start;\n height: ${ct(\"item-height\")};\n padding-left: ${ct(\"padding-left\")};\n padding-right: ${ct(\"padding-right\")};\n background-color: ${ct(\"background-color\")};\n transition: background 0.125s ease-in-out;\n &.isViewing {\n background-color: ${ct(\"background-color-viewing\")};\n }\n`;\n\nconst LabelText = styled(Text)`\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n padding-left: ${ct(\"padding-left\")};\n padding-right: ${ct(\"padding-right\")};\n gap: ${ct(\"gap\")};\n align-items: center;\n display: flex;\n`;\n","import { useMemo, type ReactNode } from \"react\";\nimport {\n SelectViewListContext,\n type SelectViewListContextValue,\n} from \"./common/hooks/use-select-view-list-context\";\nimport styled from \"@emotion/styled\";\nimport { List, type ListDataProvider } from \"../list\";\nimport { SelectViewListItem } from \"./components/select-view-list-item\";\nimport type { SelectViewItem } from \"./common/types\";\n\nexport interface SelectViewListProps<\n T extends SelectViewItem = SelectViewItem,\n P extends ListDataProvider<T> = ListDataProvider<T>\n> extends SelectViewListContextValue {\n className?: string;\n\n dp: P | undefined;\n\n emptyState?: ReactNode;\n firstChild?: ReactNode;\n lastChild?: ReactNode;\n onListItemAction: (itemId: string, actionId: string) => void;\n}\n\nexport const SelectViewList = <\n T extends SelectViewItem = SelectViewItem,\n P extends ListDataProvider<T> = ListDataProvider<T>\n>({\n className,\n dp,\n emptyState,\n firstChild,\n lastChild,\n onListItemAction,\n selected,\n viewing,\n}: SelectViewListProps<T, P>) => {\n const value = useMemo(() => {\n return {\n selected,\n viewing,\n };\n }, [selected, viewing]);\n\n return (\n <SelectViewListContext.Provider value={value}>\n <StyledSelectViewList\n className={className}\n dataProvider={dp}\n emptyState={emptyState}\n firstChild={firstChild}\n ItemTemplate={SelectViewListItem}\n lastChild={lastChild}\n onListItemAction={onListItemAction}\n />\n </SelectViewListContext.Provider>\n );\n};\n\nconst StyledSelectViewList = styled(List)`\n height: 100%;\n width: 100%;\n align-items: flex-start;\n justify-content: flex-start;\n flex-direction: column;\n overflow: auto;\n\n ::-webkit-scrollbar {\n border-left: 1px solid #dfdfdf;\n width: 9px;\n }\n\n ::-webkit-scrollbar-thumb {\n border-left: 3px solid transparent;\n }\n`;\n","import { createContext, useContext } from \"react\";\n\nexport const ItemSelectionListContext = createContext(false);\n\nexport const useItemSelectionListContext = () =>\n useContext(ItemSelectionListContext);\n","import styled from \"@emotion/styled\";\nimport { getSemanticToken } from \"../../../../styles\";\nimport { memo } from \"react\";\nimport { Text, Toggle } from \"../../../atoms\";\nimport type { TranslationFunction } from \"../../../common/types\";\n\ninterface ItemSelectionListHeaderProps {\n title: string;\n disabled?: boolean;\n t?: TranslationFunction;\n onToggleShowSelected: (value: boolean) => void;\n}\n\nexport const ItemSelectionListHeader = memo(\n ({\n title,\n disabled,\n onToggleShowSelected,\n t,\n }: ItemSelectionListHeaderProps) => (\n <StyledItemSelectionListHeader>\n <Text variant=\"h2\" color=\"dark\">\n {title}\n </Text>\n <ShowSelected>\n <Text variant=\"small\" color=\"grey\">\n {t?.(\"selectedOnly\") ?? \"MISSING T FUNC\"}\n </Text>\n <Toggle disabled={disabled} onChange={onToggleShowSelected} />\n </ShowSelected>\n </StyledItemSelectionListHeader>\n )\n);\n\nconst StyledItemSelectionListHeader = styled.div`\n display: flex;\n align-items: center;\n width: 100%;\n justify-content: space-between;\n gap: ${getSemanticToken(\"spacing-8\")};\n`;\n\nconst ShowSelected = styled.div`\n display: flex;\n align-items: center;\n gap: ${getSemanticToken(\"spacing-4\")};\n`;\n","import { memo } from \"react\";\nimport { CheckListItemTemplate, useSelectListContext } from \"../../list\";\nimport { useItemSelectionListContext } from \"../common/hooks/use-item-selection-list-context\";\nimport type { ItemSelectionListItem } from \"../common/types\";\n\nexport const ItemSelectionListItemTemplate = memo(\n (props: ItemSelectionListItem) => {\n const { selected } = useSelectListContext();\n const showSelectedOnly = useItemSelectionListContext();\n\n const isSelected = selected.includes(props.id);\n\n if (showSelectedOnly && !isSelected) return null;\n\n return <CheckListItemTemplate {...props} />;\n }\n);\n","import styled from \"@emotion/styled\";\nimport { getSemanticToken } from \"../../../styles\";\nimport { kosComponent } from \"@kosdev-code/kos-ui-sdk\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { CheckBox, Text } from \"../../atoms\";\nimport {\n CheckListItemCheck,\n CheckListItemContainer,\n CheckListItemName,\n SelectList,\n type DataProviderContextAware,\n type ListDataProvider,\n type ListProps,\n type NamedListItem,\n type SelectListProps,\n} from \"../list\";\nimport { NamedSection } from \"../named-section\";\nimport { ItemSelectionListContext } from \"./common/hooks/use-item-selection-list-context\";\nimport type { ItemSelectionListItem } from \"./common/types\";\nimport { ItemSelectionListHeader } from \"./components/item-selection-list-header\";\nimport { ItemSelectionListItemTemplate } from \"./components/item-selection-list-item-template\";\nimport type { TranslationFunction } from \"../../common/types\";\n\nconst ItemSectionNamedSection = styled(NamedSection)`\n overflow: hidden;\n`;\n\nconst ItemSectionWrapper = styled.div`\n overflow-x: hidden;\n overflow-y: auto;\n`;\n\nexport interface ItemSelectionListProps\n extends SelectListProps,\n Omit<\n ListProps<ItemSelectionListItem, ListDataProvider<ItemSelectionListItem>>,\n \"ItemTemplate\" | \"emptyState\"\n > {\n defaultShowSelected?: boolean;\n title: string;\n emptyMessage?: string;\n onSelectAll?: (action: \"select\" | \"deselect\") => void;\n t?: TranslationFunction;\n}\n\nexport const ItemSelectionList = kosComponent(\n ({\n defaultShowSelected,\n disabled,\n title,\n selected,\n onSelect,\n emptyMessage,\n dataProvider,\n onSelectAll,\n t,\n }: ItemSelectionListProps) => {\n const [showSelectedOnly, setShowSelectedOnly] = useState(\n defaultShowSelected ?? false\n );\n const selectAllRef = useRef<HTMLInputElement | null>(null);\n\n const onToggleShowSelected = useCallback((value: boolean) => {\n setShowSelectedOnly(value);\n }, []);\n\n // Update the internal showOnlySelected value.\n useEffect(() => {\n const dp = dataProvider as ListDataProvider<ItemSelectionListItem> &\n DataProviderContextAware;\n if (dp && dp.updateContextValue) {\n dp?.updateContextValue(\"isOnlySelectedVisible\", showSelectedOnly);\n }\n }, [dataProvider, showSelectedOnly]);\n\n // Update the internal selected value.\n useEffect(() => {\n const dp = dataProvider as ListDataProvider<ItemSelectionListItem> &\n DataProviderContextAware;\n if (dp && dp.updateContextValue) {\n dp?.updateContextValue(\"selected\", selected);\n }\n }, [dataProvider, selected]);\n\n useEffect(() => {\n if (selectAllRef.current && !!selected) {\n if (\n !!selected.length &&\n selected.length !== dataProvider?.items.length\n ) {\n if (\n selectAllRef.current.indeterminate !== true &&\n !!dataProvider?.items.length\n ) {\n selectAllRef.current.indeterminate = true;\n }\n } else if (selectAllRef.current.indeterminate === true) {\n selectAllRef.current.indeterminate = false;\n }\n }\n }, [dataProvider?.items, selected]);\n\n const handleSelectAll = useCallback(() => {\n if (onSelectAll) {\n onSelectAll(selected && selected.length > 0 ? \"deselect\" : \"select\");\n }\n }, [onSelectAll, selected]);\n\n return (\n <ItemSelectionListContext.Provider value={showSelectedOnly}>\n <ItemSectionNamedSection\n className=\"\"\n variant=\"display\"\n header={\n <ItemSelectionListHeader\n title={title}\n disabled={disabled}\n t={t}\n onToggleShowSelected={onToggleShowSelected}\n />\n }\n ContentWrapper={ItemSectionWrapper}\n >\n <StyledListWrapper>\n {!!onSelectAll && !!dataProvider?.items.length && (\n <CheckListItemContainer>\n <CheckListItemCheck>\n <CheckBox\n ref={selectAllRef}\n disabled={disabled}\n checked={\n !!selected &&\n !!selected.length &&\n selected.length === dataProvider.items.length\n }\n onChange={handleSelectAll}\n />\n </CheckListItemCheck>\n <CheckListItemName>\n <Text bold variant=\"body\">\n {t?.(\"selectAll\") ?? \"MISSING T FUNC\"}\n </Text>\n </CheckListItemName>\n </CheckListItemContainer>\n )}\n <SelectList<NamedListItem>\n disabled={disabled}\n selected={selected}\n isSingleSelect={false}\n onSelect={onSelect}\n emptyState={\n emptyMessage ? (\n <EmptyState>\n <Text variant=\"body\" color=\"grey\">\n {emptyMessage}\n </Text>\n </EmptyState>\n ) : undefined\n }\n ItemTemplate={ItemSelectionListItemTemplate}\n dataProvider={dataProvider}\n />\n </StyledListWrapper>\n </ItemSectionNamedSection>\n </ItemSelectionListContext.Provider>\n );\n }\n);\n\nconst StyledListWrapper = styled.div`\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: flex-start;\n`;\n\nconst EmptyState = styled.div`\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: ${getSemanticToken(\"spacing-12\")} ${getSemanticToken(\"spacing-20\")};\n`;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { kosAction } from \"@kosdev-code/kos-ui-sdk\";\nimport { observable } from \"mobx\";\nimport {\n ObservableDataProvider,\n type ItemMap,\n type ListItem,\n type ModelKey,\n} from \"../../../list\";\n\nexport interface ItemSelectionListContext {\n isOnlySelectedVisible?: boolean;\n selected?: string[];\n}\n\nexport abstract class ItemSelectionListDataProvider<\n P extends Record<string, any>,\n I extends Record<string, any>,\n T extends ListItem = ListItem,\n C extends ItemSelectionListContext = ItemSelectionListContext\n> extends ObservableDataProvider<P, I, T, C> {\n private itemMapper: ItemMap<I, T, C>;\n private observableItems: Map<string, T>;\n\n constructor(\n data: P,\n key: ModelKey<P, I>,\n mapper: ItemMap<I, T, C>,\n context?: C\n ) {\n super(data, key, mapper, {\n ...context,\n isOnlySelectedVisible: context?.isOnlySelectedVisible ?? false,\n selected: context?.selected ?? [],\n } as C);\n this.itemMapper = mapper;\n this.observableItems = observable.map(new Map());\n }\n\n override get items(): T[] {\n if (!this.initialized || this.version < 0) {\n return [];\n }\n\n const list: I[] = this.resolvedItems;\n\n const unique = [...new Set(list)];\n\n const itemMap = (item: I) => this.itemMapper(item, this.context);\n const inputFilter = (item: I) => this.filterByInputItem(item, this.context);\n const tmp = unique\n .filter(inputFilter.bind(this))\n .filter(\n this.context.get(\"isOnlySelectedVisible\") === true\n ? (item) => {\n const selected: string[] = (this.context.get(\"selected\") ??\n []) as string[];\n return selected.includes(item.id);\n }\n : () => true\n )\n .sort(this.sortByInputItem.bind(this))\n .map(itemMap) as T[];\n\n const toRemove = Array.from(this.observableItems.keys()).filter(\n (key) => !tmp.find((item) => item.id === key)\n );\n\n toRemove.forEach((key) => {\n kosAction(() => {\n this.observableItems.delete(key);\n });\n });\n tmp.reduce((acc, item) => {\n if (!acc.has(item.id)) {\n kosAction(() => {\n acc.set(item.id, item);\n });\n } else {\n const existing = acc.get(item.id);\n if (existing) {\n kosAction(() => {\n const changed = Object.assign(existing, item);\n acc.set(item.id, changed);\n });\n }\n }\n return acc;\n }, this.observableItems);\n\n return tmp.map((item) => this.observableItems.get(item.id) as T);\n }\n}\n","import styled from \"@emotion/styled\";\nimport { getComponentTokenHelpers, getSemanticToken } from \"../../../styles\";\n\nimport type { PropsWithChildren } from \"react\";\nimport { Select, Option } from \"../../atoms\";\n\nconst [optionCt, selectCt] = getComponentTokenHelpers([\"option\", \"select\"]);\n\ninterface DropdownMenuProps {\n trigger: React.ReactNode;\n onSelection: (optionKey: string) => void;\n}\n\nexport const DropdownMenu: React.FC<PropsWithChildren<DropdownMenuProps>> = ({\n trigger,\n onSelection,\n children,\n}) => (\n <StyledSelect\n Reference={trigger}\n onSelect={onSelection}\n menuPlacement=\"bottom-start\"\n >\n {children}\n </StyledSelect>\n);\n\nexport const StyledSelectOption = styled(Option)`\n ${`${optionCt(\"bg-color\", true)}: ${getSemanticToken(\"color-black\")}`};\n ${`${optionCt(\"color\", true)}: ${getSemanticToken(\"color-white\")}`};\n ${`${optionCt(\"bg-color-active\", true)}: ${getSemanticToken(\n \"color-grey70\"\n )}`};\n gap: 0px;\n cursor: pointer;\n`;\n\nconst StyledSelect = styled(Select)`\n ${`${selectCt(\"border-color\", true)}: ${getSemanticToken(\"color-black\")}`};\n z-index: 15;\n`;\n\nexport const SelectSeparator = styled.div`\n cursor: default;\n border-bottom: 0.5px solid ${getSemanticToken(\"color-grey60\")};\n pointer-events: none;\n`;\n","import styled from \"@emotion/styled\";\nimport { getComponentTokenHelpers } from \"../../../styles\";\nimport { type ReactNode } from \"react\";\n\nconst [ct] = getComponentTokenHelpers([\"shell-menu\"]);\n\ninterface ShellMenuProps {\n className?: string;\n left?: ReactNode;\n right?: ReactNode;\n}\n\nexport const ShellMenu = ({ className, left, right }: ShellMenuProps) => (\n <StyledShellMenu className={className}>\n {<MenuSection>{left}</MenuSection>}\n {!!right && <MenuSection>{right}</MenuSection>}\n </StyledShellMenu>\n);\n\nconst StyledShellMenu = styled.div`\n align-items: center;\n column-gap: ${ct(\"section-gap\")};\n display: flex;\n height: 100%;\n justify-content: space-between;\n padding: 0px ${ct(\"padding-x\")};\n width: 100%;\n`;\n\nconst MenuSection = styled.div`\n align-items: center;\n column-gap: ${ct(\"link-gap\")};\n display: flex;\n height: 100%;\n justify-content: flex-start;\n`;\n","import styled from \"@emotion/styled\";\nimport { memo } from \"react\";\nimport { Text } from \"../../../atoms\";\nimport { getComponentTokenHelpers } from \"../../../../styles\";\n\nconst [ct] = getComponentTokenHelpers([\"shell-menu\"]);\n\nexport interface ShellMenuLinkProps {\n text: string;\n onClick: () => void;\n isActive: boolean;\n}\n\nexport const ShellMenuLink = memo(\n ({ text, onClick, isActive }: ShellMenuLinkProps) => (\n <StyledShellMenuLink\n onClick={onClick}\n variant=\"body\"\n color=\"light\"\n bold={isActive}\n >\n {text}\n </StyledShellMenuLink>\n )\n);\n\nconst StyledShellMenuLink = styled(Text)`\n padding: ${ct(\"link-padding-y\")} ${ct(\"link-padding-x\")};\n line-height: unset;\n cursor: pointer;\n`;\n","import { ClassNames } from \"@emotion/react\";\nimport styled from \"@emotion/styled\";\nimport { getComponentTokenHelpers } from \"../../../styles\";\nimport { useKosTranslation } from \"@kosdev-code/kos-ui-sdk\";\nimport { memo, useCallback, useMemo } from \"react\";\nimport {\n Button,\n DarkTooltip,\n Icon,\n IconButton,\n Option,\n Select,\n Text,\n} from \"../../atoms\";\nimport { useSelectListContext, type ListItem } from \"../list\";\n\nconst [ct] = getComponentTokenHelpers([\"ingredient-card\"]);\n\nexport interface HolderListItem extends ListItem {\n ingredientName?: string;\n assigned?: boolean;\n trouble?: string;\n blocked: boolean;\n isSmall?: boolean;\n}\n\nexport const HolderListItemTemplate = memo(\n ({\n id,\n name,\n trouble,\n ingredientName,\n assigned,\n onListItemAction,\n blocked,\n isSmall,\n }: HolderListItem) => {\n const { selected, toggleSelection } = useSelectListContext();\n const { t } = useKosTranslation(\"dispenser\");\n const isSelected = useMemo(() => selected.includes(id), [selected, id]);\n\n const onDelete = useCallback(() => {\n if (onListItemAction) {\n onListItemAction(id, \"delete\");\n }\n }, [id, onListItemAction]);\n\n const onSelect = useCallback(\n (actionId: string) => {\n if (onListItemAction) {\n onListItemAction(id, actionId);\n }\n },\n [id, onListItemAction]\n );\n\n const onClick = useCallback(() => {\n toggleSelection(id);\n }, [id, toggleSelection]);\n\n return (\n <ClassNames>\n {({ cx }) => (\n <StyledHolderListItemTemplate\n className={cx(\"holder-list-item\", { isSelected, isSmall })}\n onClick={onClick}\n >\n <Top>\n <NameWrapper>\n <Text variant={isSmall ? \"small\" : \"body\"} color=\"dark\">\n {name}\n </Text>\n {!!trouble && (\n <DarkTooltip content={trouble}>\n <Icon\n iconId=\"ExclamationCircle\"\n color=\"red\"\n size={isSmall ? \"xsm\" : \"sm\"}\n />\n </DarkTooltip>\n )}\n </NameWrapper>\n {!!ingredientName && (\n <ActionsWrapper>\n <IconButton\n iconId=\"DeleteOutlined\"\n color=\"blue\"\n size={isSmall ? \"xsm\" : \"sm\"}\n onClick={onDelete}\n disabled={!assigned}\n />\n <Select\n Reference={\n <IconButton\n iconId=\"Ellipsis\"\n color=\"black\"\n size={isSmall ? \"xsm\" : \"sm\"}\n />\n }\n onSelect={onSelect}\n >\n <Option\n optionKey=\"remove\"\n label={t(\"holder.removeOption\")}\n disableSelectionStyle\n disabled={!assigned}\n />\n <Option\n optionKey=\"block\"\n disableSelectionStyle\n disabled={!assigned}\n label={t(\n `holder.${blocked ? \"unblockOption\" : \"blockOption\"}`\n )}\n />\n </Select>\n </ActionsWrapper>\n )}\n </Top>\n <Bottom\n className={cx({ isIngredientLess: ingredientName === undefined })}\n >\n {ingredientName ? (\n <Text color=\"dark\" variant={isSmall ? \"small\" : \"body\"} bold>\n {ingredientName}\n </Text>\n ) : (\n <Button\n variant={isSmall ? \"borderless-small\" : \"borderless\"}\n text={t(\"holder.assignButton\")}\n icon=\"Plus\"\n />\n )}\n </Bottom>\n </StyledHolderListItemTemplate>\n )}\n </ClassNames>\n );\n }\n);\n\nconst StyledHolderListItemTemplate = styled.div`\n width: 100%;\n height: 100%;\n border: ${ct(\"border\")} solid ${ct(\"border-color\")};\n transition: border 0.125s ease-in-out;\n border-radius: ${ct(\"border-radius\")};\n padding: ${ct(\"padding\")};\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: flex-start;\n cursor: pointer;\n &.isSmall {\n padding: ${ct(\"padding-small\")};\n }\n &.isSelected {\n border-color: ${ct(\"border-color-selected\")};\n }\n`;\n\nconst Top = styled.div`\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n column-gap: ${ct(\"column-gap\")};\n`;\n\nconst NameWrapper = styled.div`\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n column-gap: ${ct(\"column-gap\")};\n`;\n\nconst ActionsWrapper = styled.div`\n display: flex;\n align-items: center;\n column-gap: ${ct(\"column-gap\")};\n`;\n\nconst Bottom = styled.div`\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n margin-top: auto;\n &.isIngredientLess {\n justify-content: center;\n }\n`;\n","const startColors = [\"settings\", \"devices\", \"tools\", \"performance\"] as const;\nconst endColors = [\n \"viewBrowse\",\n \"manage\",\n \"configure\",\n \"troubleshoot\",\n \"store\",\n \"main\",\n] as const;\n\nexport type StartColor = (typeof startColors)[number];\nexport type EndColor = (typeof endColors)[number];\n\nexport const possibleColors = startColors\n .map((startColor) =>\n endColors.map((endColor) => {\n return { start: startColor, end: endColor };\n })\n )\n .flatMap((color) => color);\n","import styled from \"@emotion/styled\";\nimport { css } from \"@emotion/react\";\nimport { possibleColors } from \"./types\";\nimport { Text } from \"../../atoms\";\nimport { getComponentTokenHelpers, getSemanticToken } from \"../../../styles\";\n\nconst [ct, iconCt] = getComponentTokenHelpers([\"branded-header\", \"icon\"]);\n\nexport const StyledBrandedHeader = styled.div`\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: flex-start;\n border-bottom: ${ct(\"border-bottom-size\")} solid ${ct(\"border-bottom-color\")};\n`;\n\nexport const Inner = styled.div`\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n max-height: 52px;\n`;\n\nexport const BadgeWrapper = styled.div``;\n\nexport const ContentWrapper = styled.div`\n display: flex;\n flex: 1;\n gap: 16px;\n padding: 12px 20px 12px 16px;\n`;\n\nexport const InfoColumn = styled.div`\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n\n /* disabled as title usage was deprecated... */\n /* &.hasDescription {\n align-items: flex-start;\n } */\n`;\n\nexport const TextWrapper = styled.div`\n flex: 1;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: flex-start;\n row-gap: ${ct(\"text-wrapper-gap\")};\n`;\n\nexport const StyledLineDetails = styled.img`\n height: 100%;\n`;\n\nexport const BrandedBGCss = css`\n ${possibleColors.map(\n ({ start, end }) =>\n `&[data-gradient=\"${start}-${end}\"] {\n background: linear-gradient(\n 90deg,\n ${ct(`startColor-${start}`)} 0%,\n ${ct(`endColor-${end}`)} 100%\n );\n }`\n )}\n`;\n\ninterface IconFlatBadgeProps {\n color: string;\n}\n\nexport const IconFlatBadge = styled.div<IconFlatBadgeProps>`\n background-color: ${(props) => props.color};\n height: ${ct(\"badge-size\")};\n width: ${ct(\"badge-size\")};\n border-radius: ${ct(\"badge-radius\")};\n position: relative;\n ${`${iconCt(\"size-xxlrg\", true)}: 52px`};\n`;\n\nexport const IconBadge = styled.div`\n height: ${ct(\"badge-size\")};\n width: ${ct(\"badge-size\")};\n border-radius: ${ct(\"badge-radius\")};\n position: relative;\n ${`${iconCt(\"size-xxlrg\", true)}: calc(100% - 2px)`};\n ${BrandedBGCss}\n`;\n\nexport const IconWrapper = styled.div`\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 2;\n`;\n\nexport const Line = styled.div`\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n height: ${ct(\"line-height\")};\n overflow: hidden;\n ${BrandedBGCss}\n`;\n\nexport const OfflineOverlay = styled.div`\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1;\n background-color: ${getSemanticToken(\"color-grey60\")};\n opacity: 0.5;\n`;\n\nconst DescriptionStyles = styled(Text)`\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n text-overflow: ellipsis;\n`;\n\nexport const Description = (props) => (\n <DescriptionStyles {...props} variant=\"body\" color=\"dark\" />\n);\n","import { memo, type ComponentType } from \"react\";\nimport { Icon, Text, type IconIds } from \"../../atoms\";\nimport { ClassNames } from \"@emotion/react\";\nimport {\n ContentWrapper,\n Description,\n IconFlatBadge,\n IconWrapper,\n InfoColumn,\n Inner,\n OfflineOverlay,\n StyledBrandedHeader,\n TextWrapper,\n} from \"./branded-header-styles\";\n\nexport interface BrandedHeaderProps {\n color: string;\n icon?: IconIds;\n title: string;\n description?: string;\n Action?: ComponentType;\n isOffline?: boolean;\n}\n\nexport const BrandedHeader = memo(\n ({\n color,\n title,\n description,\n icon,\n Action,\n isOffline,\n }: BrandedHeaderProps) => (\n <ClassNames>\n {({ cx }) => (\n <StyledBrandedHeader>\n <Inner>\n <IconFlatBadge color={color}>\n <IconWrapper>\n {icon && <Icon iconId={icon} size=\"xxlrg\" color=\"white\" />}\n </IconWrapper>\n {!!isOffline && <OfflineOverlay />}\n </IconFlatBadge>\n <ContentWrapper>\n <InfoColumn className={cx({ hasDescription: !!description })}>\n <TextWrapper>\n <Text variant=\"h1\">{title}</Text>\n {!!description && <Description>{description}</Description>}\n </TextWrapper>\n </InfoColumn>\n {!!Action && <Action />}\n </ContentWrapper>\n </Inner>\n </StyledBrandedHeader>\n )}\n </ClassNames>\n )\n);\n","import { kosComponent } from \"@kosdev-code/kos-ui-sdk\";\nimport { createContext, useContext, useMemo, type ReactNode } from \"react\";\nimport type { TranslationFunction } from \"../../../../common/types\";\n\ninterface TableContextValue {\n t: TranslationFunction | undefined;\n onListItemAction: ((itemId: string, actionId: string) => void) | undefined;\n isSortable: boolean;\n}\n\nconst TableContext = createContext<TableContextValue | null>(null);\n\ninterface TableContextProviderProps {\n children: ReactNode;\n t?: TranslationFunction;\n isSortable?: boolean;\n onListItemAction?: (itemId: string, actionId: string) => void;\n}\n\nexport const TableContextProvider = kosComponent(\n ({\n children,\n t,\n isSortable,\n onListItemAction,\n }: TableContextProviderProps) => {\n const value = useMemo<TableContextValue>(() => {\n return {\n t,\n isSortable: !!isSortable,\n onListItemAction,\n };\n }, [isSortable, t, onListItemAction]);\n\n return (\n <TableContext.Provider value={value}>{children}</TableContext.Provider>\n );\n }\n);\n\nexport const useTableContext = () => {\n const context = useContext(TableContext);\n\n if (context === null) {\n throw new Error(\"TableContext must be used within a TableContextProvider\");\n }\n\n return context;\n};\n","import styled from \"@emotion/styled\";\nimport { getComponentTokenHelpers } from \"../../../../../styles\";\n\nconst [ct] = getComponentTokenHelpers([\"table\"]);\n\nexport const StyledTableTd = styled.td`\n padding: ${ct(\"cell-padding-y\")} ${ct(\"cell-padding-x\")};\n background-color: ${ct(\"background-color\")};\n color: ${ct(\"cell-color\")};\n font-size: ${ct(\"cell-font-size\")};\n font-weight: ${ct(\"cell-font-weight\")};\n &.isSortable {\n padding-right: ${ct(\"cell-padding-right-sortable\")};\n }\n`;\n","import type { BaseTableItem, TableTdProps } from \"../types\";\nimport { memo, type ReactNode } from \"react\";\nimport { useTableContext } from \"../context/use-table-context\";\nimport { renderTableContents } from \"../helpers/render-table-contents\";\nimport { StyledTableTd } from \"../style/styled-td\";\n\nexport const TableTd: <T extends BaseTableItem>(\n props: TableTdProps<T>\n) => ReactNode = memo(({ cell }) => {\n const { isSortable } = useTableContext();\n return (\n <StyledTableTd\n className={\n isSortable && cell.column.getCanSort() ? \"isSortable\" : undefined\n }\n key={cell.id}\n >\n {renderTableContents(cell.column.columnDef.cell, cell.getContext())}\n </StyledTableTd>\n );\n});\n","import styled from \"@emotion/styled\";\nimport { getComponentTokenHelpers } from \"../../../../../styles\";\n\nconst [ct] = getComponentTokenHelpers([\"table\"]);\n\nexport const StyledTableTr = styled.tr`\n width: 100%;\n border-bottom: ${ct(\"row-border-bottom-size\")} solid ${ct(\"border-color\")};\n`;\n","import { memo, type ReactNode } from \"react\";\nimport type { BaseTableItem, TableTrProps } from \"../common/types\";\nimport { StyledTableTr } from \"../common/style/styled-tr\";\nimport { TableTd } from \"../common/components/table-td\";\n\nexport const TableTr: <T extends BaseTableItem>(\n props: TableTrProps<T>\n) => ReactNode = memo(({ row, TdComponent }) => {\n const Td = TdComponent ?? TableTd;\n\n return (\n <StyledTableTr>\n {row.getVisibleCells().map((cell) => (\n <Td cell={cell} key={cell.id} />\n ))}\n </StyledTableTr>\n );\n});\n","import styled from \"@emotion/styled\";\nimport { Fragment, useState, type ReactNode } from \"react\";\nimport type {\n BaseTableItem,\n TableDataProvider,\n TableProps,\n} from \"./common/types\";\n\nimport { kosComponent } from \"@kosdev-code/kos-ui-sdk\";\nimport { getComponentTokenHelpers } from \"../../../styles\";\n// eslint-disable-next-line no-restricted-imports\nimport {\n flexRender,\n getCoreRowModel,\n getSortedRowModel,\n useReactTable,\n type SortingState,\n} from \"@tanstack/react-table\";\nimport { useLoadDataProvider } from \"../list\";\nimport { TableTd } from \"./common/components/table-td\";\nimport { TableContextProvider } from \"./common/context/use-table-context\";\nimport { StyledTableTd } from \"./common/style/styled-td\";\nimport { StyledTableTr } from \"./common/style/styled-tr\";\nimport { TableTr } from \"./components/table-tr\";\n\nconst [ct] = getComponentTokenHelpers([\"table\"]);\n\nconst DEFAULT_ITEMS = [];\n\nconst _getRowId = <T extends BaseTableItem>(row: T) => row.id;\n\nexport const Table: <\n T extends BaseTableItem,\n P extends TableDataProvider<T> = TableDataProvider<T>\n>(\n props: TableProps<T, P>\n) => ReactNode = kosComponent(\n ({\n dataProvider,\n columns,\n getRowId,\n emptyState,\n isSortable,\n t,\n TdComponent,\n TrComponent,\n onListItemAction,\n renderEmptyAsStandalone,\n disabled,\n ...tableProps\n }) => {\n useLoadDataProvider(dataProvider);\n\n const [sorting, setSorting] = useState<SortingState>([]);\n\n const table = useReactTable({\n columns,\n\n meta: { disabled },\n data: dataProvider ? dataProvider?.items : DEFAULT_ITEMS,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: isSortable ? getSortedRowModel() : undefined,\n getRowId: getRowId ?? _getRowId,\n onSortingChange: isSortable ? setSorting : undefined,\n state: {\n sorting,\n },\n });\n\n const Tr = TrComponent ?? TableTr;\n\n const isEmpty = !table.getRowModel().rows.length;\n\n if (isEmpty && renderEmptyAsStandalone) {\n return emptyState ?? null;\n }\n\n return (\n <TableContextProvider\n onListItemAction={onListItemAction}\n isSortable={isSortable}\n t={t}\n >\n <StyledTable {...tableProps}>\n <Thead>\n {table.getHeaderGroups().map((headerGroup) => (\n <StyledTableTr key={headerGroup.id}>\n {headerGroup.headers.map((header) => (\n // Fragment is required here because flexRender doesnt work nice with the \"key\" prop\n <Fragment key={header.id}>\n {flexRender(\n header.column.columnDef.header,\n header.getContext()\n )}\n </Fragment>\n ))}\n </StyledTableTr>\n ))}\n </Thead>\n <Tbody>\n {!isEmpty ? (\n table\n .getRowModel()\n .rows.map((row) => (\n <Tr\n row={row}\n key={row.id}\n TdComponent={TdComponent ?? TableTd}\n />\n ))\n ) : (\n <StyledTableTr>\n <StyledTableTd colSpan={columns.length}>\n {emptyState ?? null}\n </StyledTableTd>\n </StyledTableTr>\n )}\n </Tbody>\n </StyledTable>\n </TableContextProvider>\n );\n }\n);\n\nconst StyledTable = styled.table`\n width: 100%;\n overflow: auto;\n border-collapse: collapse;\n font-family: ${ct(\"font-family\")};\n table-layout: fixed;\n`;\n\nconst Thead = styled.thead`\n width: 100%;\n`;\n\nconst Tbody = styled.tbody`\n width: 100%;\n`;\n","import styled from \"@emotion/styled\";\nimport { getComponentTokenHelpers } from \"../../../../../styles\";\n// eslint-disable-next-line no-restricted-imports\nimport type { SortDirection } from \"@tanstack/react-table\";\nimport { memo, useCallback } from \"react\";\nimport cx from \"classnames\";\nimport { DarkTooltip, IconButton } from \"../../../../atoms\";\nimport { useTableContext } from \"../context/use-table-context\";\nimport type { TranslationFunction } from \"../../../../common/types\";\n\nconst [ct] = getComponentTokenHelpers([\"table\"]);\n\nconst getSortDirectionText = (\n sortValue: SortDirection | false,\n t?: TranslationFunction\n) => {\n if (!sortValue) {\n return (\n t?.(\"table.sort\", { direction: t?.(\"table.descending\") }) ??\n \"Click to sort descending\"\n );\n }\n\n if (sortValue === \"desc\") {\n return (\n t?.(\"table.sort\", { direction: t?.(\"table.ascending\") }) ??\n \"Click to sort ascending\"\n );\n }\n return t?.(\"table.cancelSort\") ?? \"Cancel sort\";\n};\n\ninterface TableHeaderProps {\n sortValue: SortDirection | false;\n canSort: boolean;\n id: string;\n width?: string;\n isBlank?: boolean;\n toggleSorting: () => void;\n}\n\nexport const TableHeader = memo(\n ({\n width,\n isBlank,\n toggleSorting,\n id,\n sortValue,\n canSort,\n }: TableHeaderProps) => {\n const { isSortable, t } = useTableContext();\n\n const onSort = useCallback(() => {\n toggleSorting();\n }, [toggleSorting]);\n\n return (\n <StyledTableHeader\n className={cx({\n isSortable: isSortable && canSort,\n isSorted: sortValue !== false,\n })}\n style={{\n width: width ?? \"auto\",\n }}\n >\n <Inner>\n {!isBlank && (t?.(`table.header.${id}`) ?? id)}\n {isSortable && canSort && (\n <DarkTooltip content={getSortDirectionText(sortValue, t)}>\n <IconButton\n iconId={\n !sortValue\n ? \"Sort\"\n : sortValue === \"asc\"\n ? \"SortAscending\"\n : \"SortDescending\"\n }\n size=\"sm\"\n onClick={onSort}\n color=\"grey\"\n />\n </DarkTooltip>\n )}\n </Inner>\n </StyledTableHeader>\n );\n }\n);\n\nconst StyledTableHeader = styled.th`\n padding: ${ct(\"cell-padding-y\")} ${ct(\"cell-padding-x\")};\n background-color: ${ct(\"header-background-color\")};\n text-align: left;\n color: ${ct(\"head-color\")};\n font-size: ${ct(\"head-font-size\")};\n font-weight: ${ct(\"head-font-weight\")};\n &.isSortable {\n transition: background 0.125s ease-in-out;\n padding-right: ${ct(\"cell-padding-right-sortable\")};\n cursor: pointer;\n :hover {\n background-color: ${ct(\"header-background-color-hover\")};\n }\n }\n &.isSorted {\n background-color: ${ct(\"header-background-color-hover\")};\n }\n`;\n\nconst Inner = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n column-gap: ${ct(\"head-gap-sortable\")};\n`;\n","// eslint-disable-next-line no-restricted-imports\nimport { createColumnHelper } from \"@tanstack/react-table\";\nimport { TableHeader } from \"../common/components/table-header\";\nimport { TableColumnHelper, TableRowData } from \"../common/types\";\ninterface CustomTableColumnMeta {\n width?: string;\n isBlank?: boolean;\n isVirtual?: boolean;\n}\n\ndeclare module \"@tanstack/table-core\" {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n interface ColumnMeta<TData extends TableRowData, TValue> {\n width?: string;\n isBlank?: boolean;\n }\n\n interface TableMeta<TData extends TableRowData> {\n disabled?: boolean;\n }\n}\n\nexport const createTableColumnHelper = <T extends TableRowData>() => {\n const helper = createColumnHelper<T>();\n\n const accessorColumn: (\n meta?: CustomTableColumnMeta\n ) => TableColumnHelper<T>[\"accessor\"] = (meta) => (accessor, columnDef) =>\n helper.accessor(accessor, {\n header: ({ column, header }) => (\n <TableHeader\n id={header.id}\n key={header.id}\n canSort={column.getCanSort()}\n width={\n meta?.isVirtual\n ? `${header.getSize()}px`\n : column.columnDef.meta?.width\n }\n isBlank={column.columnDef.meta?.isBlank}\n toggleSorting={column.toggleSorting}\n sortValue={column.getIsSorted()}\n />\n ),\n ...columnDef,\n meta: {\n ...columnDef.meta,\n width: \"auto\",\n ...meta,\n },\n });\n\n const displayColumn: (\n meta?: CustomTableColumnMeta\n ) => TableColumnHelper<T>[\"display\"] = (meta) => (columnDef) =>\n helper.display({\n header: ({ column, header }) => (\n <TableHeader\n id={header.id}\n key={header.id}\n canSort={column.getCanSort()}\n width={\n meta?.isVirtual\n ? `${header.getSize()}px`\n : column.columnDef.meta?.width\n }\n isBlank={column.columnDef.meta?.isBlank}\n toggleSorting={column.toggleSorting}\n sortValue={column.getIsSorted()}\n />\n ),\n ...columnDef,\n meta: {\n ...columnDef.meta,\n width: \"auto\",\n ...meta,\n },\n });\n\n const groupColumn: (\n meta?: CustomTableColumnMeta\n ) => TableColumnHelper<T>[\"group\"] = (meta) => (columnDef) =>\n helper.group({\n ...columnDef,\n meta: {\n ...columnDef.meta,\n width: \"auto\",\n ...meta,\n },\n });\n\n return {\n displayColumn,\n accessorColumn,\n groupColumn,\n };\n};\n","function memo(getDeps, fn, opts) {\n let deps = opts.initialDeps ?? [];\n let result;\n function memoizedFunction() {\n var _a, _b, _c, _d;\n let depTime;\n if (opts.key && ((_a = opts.debug) == null ? void 0 : _a.call(opts))) depTime = Date.now();\n const newDeps = getDeps();\n const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => deps[index] !== dep);\n if (!depsChanged) {\n return result;\n }\n deps = newDeps;\n let resultTime;\n if (opts.key && ((_b = opts.debug) == null ? void 0 : _b.call(opts))) resultTime = Date.now();\n result = fn(...newDeps);\n if (opts.key && ((_c = opts.debug) == null ? void 0 : _c.call(opts))) {\n const depEndTime = Math.round((Date.now() - depTime) * 100) / 100;\n const resultEndTime = Math.round((Date.now() - resultTime) * 100) / 100;\n const resultFpsPercentage = resultEndTime / 16;\n const pad = (str, num) => {\n str = String(str);\n while (str.length < num) {\n str = \" \" + str;\n }\n return str;\n };\n console.info(\n `%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`,\n `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(\n 0,\n Math.min(120 - 120 * resultFpsPercentage, 120)\n )}deg 100% 31%);`,\n opts == null ? void 0 : opts.key\n );\n }\n (_d = opts == null ? void 0 : opts.onChange) == null ? void 0 : _d.call(opts, result);\n return result;\n }\n memoizedFunction.updateDeps = (newDeps) => {\n deps = newDeps;\n };\n return memoizedFunction;\n}\nfunction notUndefined(value, msg) {\n if (value === void 0) {\n throw new Error(`Unexpected undefined${msg ? `: ${msg}` : \"\"}`);\n } else {\n return value;\n }\n}\nconst approxEqual = (a, b) => Math.abs(a - b) < 1.01;\nconst debounce = (targetWindow, fn, ms) => {\n let timeoutId;\n return function(...args) {\n targetWindow.clearTimeout(timeoutId);\n timeoutId = targetWindow.setTimeout(() => fn.apply(this, args), ms);\n };\n};\nexport {\n approxEqual,\n debounce,\n memo,\n notUndefined\n};\n//# sourceMappingURL=utils.js.map\n","import { debounce, memo, notUndefined, approxEqual } from \"./utils.js\";\nconst getRect = (element) => {\n const { offsetWidth, offsetHeight } = element;\n return { width: offsetWidth, height: offsetHeight };\n};\nconst defaultKeyExtractor = (index) => index;\nconst defaultRangeExtractor = (range) => {\n const start = Math.max(range.startIndex - range.overscan, 0);\n const end = Math.min(range.endIndex + range.overscan, range.count - 1);\n const arr = [];\n for (let i = start; i <= end; i++) {\n arr.push(i);\n }\n return arr;\n};\nconst observeElementRect = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const targetWindow = instance.targetWindow;\n if (!targetWindow) {\n return;\n }\n const handler = (rect) => {\n const { width, height } = rect;\n cb({ width: Math.round(width), height: Math.round(height) });\n };\n handler(getRect(element));\n if (!targetWindow.ResizeObserver) {\n return () => {\n };\n }\n const observer = new targetWindow.ResizeObserver((entries) => {\n const run = () => {\n const entry = entries[0];\n if (entry == null ? void 0 : entry.borderBoxSize) {\n const box = entry.borderBoxSize[0];\n if (box) {\n handler({ width: box.inlineSize, height: box.blockSize });\n return;\n }\n }\n handler(getRect(element));\n };\n instance.options.useAnimationFrameWithResizeObserver ? requestAnimationFrame(run) : run();\n });\n observer.observe(element, { box: \"border-box\" });\n return () => {\n observer.unobserve(element);\n };\n};\nconst addEventListenerOptions = {\n passive: true\n};\nconst observeWindowRect = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const handler = () => {\n cb({ width: element.innerWidth, height: element.innerHeight });\n };\n handler();\n element.addEventListener(\"resize\", handler, addEventListenerOptions);\n return () => {\n element.removeEventListener(\"resize\", handler);\n };\n};\nconst supportsScrollend = typeof window == \"undefined\" ? true : \"onscrollend\" in window;\nconst observeElementOffset = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const targetWindow = instance.targetWindow;\n if (!targetWindow) {\n return;\n }\n let offset = 0;\n const fallback = instance.options.useScrollendEvent && supportsScrollend ? () => void 0 : debounce(\n targetWindow,\n () => {\n cb(offset, false);\n },\n instance.options.isScrollingResetDelay\n );\n const createHandler = (isScrolling) => () => {\n const { horizontal, isRtl } = instance.options;\n offset = horizontal ? element[\"scrollLeft\"] * (isRtl && -1 || 1) : element[\"scrollTop\"];\n fallback();\n cb(offset, isScrolling);\n };\n const handler = createHandler(true);\n const endHandler = createHandler(false);\n endHandler();\n element.addEventListener(\"scroll\", handler, addEventListenerOptions);\n const registerScrollendEvent = instance.options.useScrollendEvent && supportsScrollend;\n if (registerScrollendEvent) {\n element.addEventListener(\"scrollend\", endHandler, addEventListenerOptions);\n }\n return () => {\n element.removeEventListener(\"scroll\", handler);\n if (registerScrollendEvent) {\n element.removeEventListener(\"scrollend\", endHandler);\n }\n };\n};\nconst observeWindowOffset = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const targetWindow = instance.targetWindow;\n if (!targetWindow) {\n return;\n }\n let offset = 0;\n const fallback = instance.options.useScrollendEvent && supportsScrollend ? () => void 0 : debounce(\n targetWindow,\n () => {\n cb(offset, false);\n },\n instance.options.isScrollingResetDelay\n );\n const createHandler = (isScrolling) => () => {\n offset = element[instance.options.horizontal ? \"scrollX\" : \"scrollY\"];\n fallback();\n cb(offset, isScrolling);\n };\n const handler = createHandler(true);\n const endHandler = createHandler(false);\n endHandler();\n element.addEventListener(\"scroll\", handler, addEventListenerOptions);\n const registerScrollendEvent = instance.options.useScrollendEvent && supportsScrollend;\n if (registerScrollendEvent) {\n element.addEventListener(\"scrollend\", endHandler, addEventListenerOptions);\n }\n return () => {\n element.removeEventListener(\"scroll\", handler);\n if (registerScrollendEvent) {\n element.removeEventListener(\"scrollend\", endHandler);\n }\n };\n};\nconst measureElement = (element, entry, instance) => {\n if (entry == null ? void 0 : entry.borderBoxSize) {\n const box = entry.borderBoxSize[0];\n if (box) {\n const size = Math.round(\n box[instance.options.horizontal ? \"inlineSize\" : \"blockSize\"]\n );\n return size;\n }\n }\n return element[instance.options.horizontal ? \"offsetWidth\" : \"offsetHeight\"];\n};\nconst windowScroll = (offset, {\n adjustments = 0,\n behavior\n}, instance) => {\n var _a, _b;\n const toOffset = offset + adjustments;\n (_b = (_a = instance.scrollElement) == null ? void 0 : _a.scrollTo) == null ? void 0 : _b.call(_a, {\n [instance.options.horizontal ? \"left\" : \"top\"]: toOffset,\n behavior\n });\n};\nconst elementScroll = (offset, {\n adjustments = 0,\n behavior\n}, instance) => {\n var _a, _b;\n const toOffset = offset + adjustments;\n (_b = (_a = instance.scrollElement) == null ? void 0 : _a.scrollTo) == null ? void 0 : _b.call(_a, {\n [instance.options.horizontal ? \"left\" : \"top\"]: toOffset,\n behavior\n });\n};\nclass Virtualizer {\n constructor(opts) {\n this.unsubs = [];\n this.scrollElement = null;\n this.targetWindow = null;\n this.isScrolling = false;\n this.measurementsCache = [];\n this.itemSizeCache = /* @__PURE__ */ new Map();\n this.pendingMeasuredCacheIndexes = [];\n this.scrollRect = null;\n this.scrollOffset = null;\n this.scrollDirection = null;\n this.scrollAdjustments = 0;\n this.elementsCache = /* @__PURE__ */ new Map();\n this.observer = /* @__PURE__ */ (() => {\n let _ro = null;\n const get = () => {\n if (_ro) {\n return _ro;\n }\n if (!this.targetWindow || !this.targetWindow.ResizeObserver) {\n return null;\n }\n return _ro = new this.targetWindow.ResizeObserver((entries) => {\n entries.forEach((entry) => {\n const run = () => {\n this._measureElement(entry.target, entry);\n };\n this.options.useAnimationFrameWithResizeObserver ? requestAnimationFrame(run) : run();\n });\n });\n };\n return {\n disconnect: () => {\n var _a;\n (_a = get()) == null ? void 0 : _a.disconnect();\n _ro = null;\n },\n observe: (target) => {\n var _a;\n return (_a = get()) == null ? void 0 : _a.observe(target, { box: \"border-box\" });\n },\n unobserve: (target) => {\n var _a;\n return (_a = get()) == null ? void 0 : _a.unobserve(target);\n }\n };\n })();\n this.range = null;\n this.setOptions = (opts2) => {\n Object.entries(opts2).forEach(([key, value]) => {\n if (typeof value === \"undefined\") delete opts2[key];\n });\n this.options = {\n debug: false,\n initialOffset: 0,\n overscan: 1,\n paddingStart: 0,\n paddingEnd: 0,\n scrollPaddingStart: 0,\n scrollPaddingEnd: 0,\n horizontal: false,\n getItemKey: defaultKeyExtractor,\n rangeExtractor: defaultRangeExtractor,\n onChange: () => {\n },\n measureElement,\n initialRect: { width: 0, height: 0 },\n scrollMargin: 0,\n gap: 0,\n indexAttribute: \"data-index\",\n initialMeasurementsCache: [],\n lanes: 1,\n isScrollingResetDelay: 150,\n enabled: true,\n isRtl: false,\n useScrollendEvent: false,\n useAnimationFrameWithResizeObserver: false,\n ...opts2\n };\n };\n this.notify = (sync) => {\n var _a, _b;\n (_b = (_a = this.options).onChange) == null ? void 0 : _b.call(_a, this, sync);\n };\n this.maybeNotify = memo(\n () => {\n this.calculateRange();\n return [\n this.isScrolling,\n this.range ? this.range.startIndex : null,\n this.range ? this.range.endIndex : null\n ];\n },\n (isScrolling) => {\n this.notify(isScrolling);\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"maybeNotify\",\n debug: () => this.options.debug,\n initialDeps: [\n this.isScrolling,\n this.range ? this.range.startIndex : null,\n this.range ? this.range.endIndex : null\n ]\n }\n );\n this.cleanup = () => {\n this.unsubs.filter(Boolean).forEach((d) => d());\n this.unsubs = [];\n this.observer.disconnect();\n this.scrollElement = null;\n this.targetWindow = null;\n };\n this._didMount = () => {\n return () => {\n this.cleanup();\n };\n };\n this._willUpdate = () => {\n var _a;\n const scrollElement = this.options.enabled ? this.options.getScrollElement() : null;\n if (this.scrollElement !== scrollElement) {\n this.cleanup();\n if (!scrollElement) {\n this.maybeNotify();\n return;\n }\n this.scrollElement = scrollElement;\n if (this.scrollElement && \"ownerDocument\" in this.scrollElement) {\n this.targetWindow = this.scrollElement.ownerDocument.defaultView;\n } else {\n this.targetWindow = ((_a = this.scrollElement) == null ? void 0 : _a.window) ?? null;\n }\n this.elementsCache.forEach((cached) => {\n this.observer.observe(cached);\n });\n this._scrollToOffset(this.getScrollOffset(), {\n adjustments: void 0,\n behavior: void 0\n });\n this.unsubs.push(\n this.options.observeElementRect(this, (rect) => {\n this.scrollRect = rect;\n this.maybeNotify();\n })\n );\n this.unsubs.push(\n this.options.observeElementOffset(this, (offset, isScrolling) => {\n this.scrollAdjustments = 0;\n this.scrollDirection = isScrolling ? this.getScrollOffset() < offset ? \"forward\" : \"backward\" : null;\n this.scrollOffset = offset;\n this.isScrolling = isScrolling;\n this.maybeNotify();\n })\n );\n }\n };\n this.getSize = () => {\n if (!this.options.enabled) {\n this.scrollRect = null;\n return 0;\n }\n this.scrollRect = this.scrollRect ?? this.options.initialRect;\n return this.scrollRect[this.options.horizontal ? \"width\" : \"height\"];\n };\n this.getScrollOffset = () => {\n if (!this.options.enabled) {\n this.scrollOffset = null;\n return 0;\n }\n this.scrollOffset = this.scrollOffset ?? (typeof this.options.initialOffset === \"function\" ? this.options.initialOffset() : this.options.initialOffset);\n return this.scrollOffset;\n };\n this.getFurthestMeasurement = (measurements, index) => {\n const furthestMeasurementsFound = /* @__PURE__ */ new Map();\n const furthestMeasurements = /* @__PURE__ */ new Map();\n for (let m = index - 1; m >= 0; m--) {\n const measurement = measurements[m];\n if (furthestMeasurementsFound.has(measurement.lane)) {\n continue;\n }\n const previousFurthestMeasurement = furthestMeasurements.get(\n measurement.lane\n );\n if (previousFurthestMeasurement == null || measurement.end > previousFurthestMeasurement.end) {\n furthestMeasurements.set(measurement.lane, measurement);\n } else if (measurement.end < previousFurthestMeasurement.end) {\n furthestMeasurementsFound.set(measurement.lane, true);\n }\n if (furthestMeasurementsFound.size === this.options.lanes) {\n break;\n }\n }\n return furthestMeasurements.size === this.options.lanes ? Array.from(furthestMeasurements.values()).sort((a, b) => {\n if (a.end === b.end) {\n return a.index - b.index;\n }\n return a.end - b.end;\n })[0] : void 0;\n };\n this.getMeasurementOptions = memo(\n () => [\n this.options.count,\n this.options.paddingStart,\n this.options.scrollMargin,\n this.options.getItemKey,\n this.options.enabled\n ],\n (count, paddingStart, scrollMargin, getItemKey, enabled) => {\n this.pendingMeasuredCacheIndexes = [];\n return {\n count,\n paddingStart,\n scrollMargin,\n getItemKey,\n enabled\n };\n },\n {\n key: false\n }\n );\n this.getMeasurements = memo(\n () => [this.getMeasurementOptions(), this.itemSizeCache],\n ({ count, paddingStart, scrollMargin, getItemKey, enabled }, itemSizeCache) => {\n if (!enabled) {\n this.measurementsCache = [];\n this.itemSizeCache.clear();\n return [];\n }\n if (this.measurementsCache.length === 0) {\n this.measurementsCache = this.options.initialMeasurementsCache;\n this.measurementsCache.forEach((item) => {\n this.itemSizeCache.set(item.key, item.size);\n });\n }\n const min = this.pendingMeasuredCacheIndexes.length > 0 ? Math.min(...this.pendingMeasuredCacheIndexes) : 0;\n this.pendingMeasuredCacheIndexes = [];\n const measurements = this.measurementsCache.slice(0, min);\n for (let i = min; i < count; i++) {\n const key = getItemKey(i);\n const furthestMeasurement = this.options.lanes === 1 ? measurements[i - 1] : this.getFurthestMeasurement(measurements, i);\n const start = furthestMeasurement ? furthestMeasurement.end + this.options.gap : paddingStart + scrollMargin;\n const measuredSize = itemSizeCache.get(key);\n const size = typeof measuredSize === \"number\" ? measuredSize : this.options.estimateSize(i);\n const end = start + size;\n const lane = furthestMeasurement ? furthestMeasurement.lane : i % this.options.lanes;\n measurements[i] = {\n index: i,\n start,\n size,\n end,\n key,\n lane\n };\n }\n this.measurementsCache = measurements;\n return measurements;\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"getMeasurements\",\n debug: () => this.options.debug\n }\n );\n this.calculateRange = memo(\n () => [\n this.getMeasurements(),\n this.getSize(),\n this.getScrollOffset(),\n this.options.lanes\n ],\n (measurements, outerSize, scrollOffset, lanes) => {\n return this.range = measurements.length > 0 && outerSize > 0 ? calculateRange({\n measurements,\n outerSize,\n scrollOffset,\n lanes\n }) : null;\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"calculateRange\",\n debug: () => this.options.debug\n }\n );\n this.getVirtualIndexes = memo(\n () => {\n let startIndex = null;\n let endIndex = null;\n const range = this.calculateRange();\n if (range) {\n startIndex = range.startIndex;\n endIndex = range.endIndex;\n }\n this.maybeNotify.updateDeps([this.isScrolling, startIndex, endIndex]);\n return [\n this.options.rangeExtractor,\n this.options.overscan,\n this.options.count,\n startIndex,\n endIndex\n ];\n },\n (rangeExtractor, overscan, count, startIndex, endIndex) => {\n return startIndex === null || endIndex === null ? [] : rangeExtractor({\n startIndex,\n endIndex,\n overscan,\n count\n });\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"getVirtualIndexes\",\n debug: () => this.options.debug\n }\n );\n this.indexFromElement = (node) => {\n const attributeName = this.options.indexAttribute;\n const indexStr = node.getAttribute(attributeName);\n if (!indexStr) {\n console.warn(\n `Missing attribute name '${attributeName}={index}' on measured element.`\n );\n return -1;\n }\n return parseInt(indexStr, 10);\n };\n this._measureElement = (node, entry) => {\n const index = this.indexFromElement(node);\n const item = this.measurementsCache[index];\n if (!item) {\n return;\n }\n const key = item.key;\n const prevNode = this.elementsCache.get(key);\n if (prevNode !== node) {\n if (prevNode) {\n this.observer.unobserve(prevNode);\n }\n this.observer.observe(node);\n this.elementsCache.set(key, node);\n }\n if (node.isConnected) {\n this.resizeItem(index, this.options.measureElement(node, entry, this));\n }\n };\n this.resizeItem = (index, size) => {\n const item = this.measurementsCache[index];\n if (!item) {\n return;\n }\n const itemSize = this.itemSizeCache.get(item.key) ?? item.size;\n const delta = size - itemSize;\n if (delta !== 0) {\n if (this.shouldAdjustScrollPositionOnItemSizeChange !== void 0 ? this.shouldAdjustScrollPositionOnItemSizeChange(item, delta, this) : item.start < this.getScrollOffset() + this.scrollAdjustments) {\n if (process.env.NODE_ENV !== \"production\" && this.options.debug) {\n console.info(\"correction\", delta);\n }\n this._scrollToOffset(this.getScrollOffset(), {\n adjustments: this.scrollAdjustments += delta,\n behavior: void 0\n });\n }\n this.pendingMeasuredCacheIndexes.push(item.index);\n this.itemSizeCache = new Map(this.itemSizeCache.set(item.key, size));\n this.notify(false);\n }\n };\n this.measureElement = (node) => {\n if (!node) {\n this.elementsCache.forEach((cached, key) => {\n if (!cached.isConnected) {\n this.observer.unobserve(cached);\n this.elementsCache.delete(key);\n }\n });\n return;\n }\n this._measureElement(node, void 0);\n };\n this.getVirtualItems = memo(\n () => [this.getVirtualIndexes(), this.getMeasurements()],\n (indexes, measurements) => {\n const virtualItems = [];\n for (let k = 0, len = indexes.length; k < len; k++) {\n const i = indexes[k];\n const measurement = measurements[i];\n virtualItems.push(measurement);\n }\n return virtualItems;\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"getVirtualItems\",\n debug: () => this.options.debug\n }\n );\n this.getVirtualItemForOffset = (offset) => {\n const measurements = this.getMeasurements();\n if (measurements.length === 0) {\n return void 0;\n }\n return notUndefined(\n measurements[findNearestBinarySearch(\n 0,\n measurements.length - 1,\n (index) => notUndefined(measurements[index]).start,\n offset\n )]\n );\n };\n this.getOffsetForAlignment = (toOffset, align, itemSize = 0) => {\n const size = this.getSize();\n const scrollOffset = this.getScrollOffset();\n if (align === \"auto\") {\n align = toOffset >= scrollOffset + size ? \"end\" : \"start\";\n }\n if (align === \"center\") {\n toOffset += (itemSize - size) / 2;\n } else if (align === \"end\") {\n toOffset -= size;\n }\n const maxOffset = this.getTotalSize() + this.options.scrollMargin - size;\n return Math.max(Math.min(maxOffset, toOffset), 0);\n };\n this.getOffsetForIndex = (index, align = \"auto\") => {\n index = Math.max(0, Math.min(index, this.options.count - 1));\n const item = this.measurementsCache[index];\n if (!item) {\n return void 0;\n }\n const size = this.getSize();\n const scrollOffset = this.getScrollOffset();\n if (align === \"auto\") {\n if (item.end >= scrollOffset + size - this.options.scrollPaddingEnd) {\n align = \"end\";\n } else if (item.start <= scrollOffset + this.options.scrollPaddingStart) {\n align = \"start\";\n } else {\n return [scrollOffset, align];\n }\n }\n const toOffset = align === \"end\" ? item.end + this.options.scrollPaddingEnd : item.start - this.options.scrollPaddingStart;\n return [\n this.getOffsetForAlignment(toOffset, align, item.size),\n align\n ];\n };\n this.isDynamicMode = () => this.elementsCache.size > 0;\n this.scrollToOffset = (toOffset, { align = \"start\", behavior } = {}) => {\n if (behavior === \"smooth\" && this.isDynamicMode()) {\n console.warn(\n \"The `smooth` scroll behavior is not fully supported with dynamic size.\"\n );\n }\n this._scrollToOffset(this.getOffsetForAlignment(toOffset, align), {\n adjustments: void 0,\n behavior\n });\n };\n this.scrollToIndex = (index, { align: initialAlign = \"auto\", behavior } = {}) => {\n if (behavior === \"smooth\" && this.isDynamicMode()) {\n console.warn(\n \"The `smooth` scroll behavior is not fully supported with dynamic size.\"\n );\n }\n index = Math.max(0, Math.min(index, this.options.count - 1));\n let attempts = 0;\n const maxAttempts = 10;\n const tryScroll = (currentAlign) => {\n if (!this.targetWindow) return;\n const offsetInfo = this.getOffsetForIndex(index, currentAlign);\n if (!offsetInfo) {\n console.warn(\"Failed to get offset for index:\", index);\n return;\n }\n const [offset, align] = offsetInfo;\n this._scrollToOffset(offset, { adjustments: void 0, behavior });\n this.targetWindow.requestAnimationFrame(() => {\n const currentOffset = this.getScrollOffset();\n const afterInfo = this.getOffsetForIndex(index, align);\n if (!afterInfo) {\n console.warn(\"Failed to get offset for index:\", index);\n return;\n }\n if (!approxEqual(afterInfo[0], currentOffset)) {\n scheduleRetry(align);\n }\n });\n };\n const scheduleRetry = (align) => {\n if (!this.targetWindow) return;\n attempts++;\n if (attempts < maxAttempts) {\n if (process.env.NODE_ENV !== \"production\" && this.options.debug) {\n console.info(\"Schedule retry\", attempts, maxAttempts);\n }\n this.targetWindow.requestAnimationFrame(() => tryScroll(align));\n } else {\n console.warn(\n `Failed to scroll to index ${index} after ${maxAttempts} attempts.`\n );\n }\n };\n tryScroll(initialAlign);\n };\n this.scrollBy = (delta, { behavior } = {}) => {\n if (behavior === \"smooth\" && this.isDynamicMode()) {\n console.warn(\n \"The `smooth` scroll behavior is not fully supported with dynamic size.\"\n );\n }\n this._scrollToOffset(this.getScrollOffset() + delta, {\n adjustments: void 0,\n behavior\n });\n };\n this.getTotalSize = () => {\n var _a;\n const measurements = this.getMeasurements();\n let end;\n if (measurements.length === 0) {\n end = this.options.paddingStart;\n } else if (this.options.lanes === 1) {\n end = ((_a = measurements[measurements.length - 1]) == null ? void 0 : _a.end) ?? 0;\n } else {\n const endByLane = Array(this.options.lanes).fill(null);\n let endIndex = measurements.length - 1;\n while (endIndex >= 0 && endByLane.some((val) => val === null)) {\n const item = measurements[endIndex];\n if (endByLane[item.lane] === null) {\n endByLane[item.lane] = item.end;\n }\n endIndex--;\n }\n end = Math.max(...endByLane.filter((val) => val !== null));\n }\n return Math.max(\n end - this.options.scrollMargin + this.options.paddingEnd,\n 0\n );\n };\n this._scrollToOffset = (offset, {\n adjustments,\n behavior\n }) => {\n this.options.scrollToFn(offset, { behavior, adjustments }, this);\n };\n this.measure = () => {\n this.itemSizeCache = /* @__PURE__ */ new Map();\n this.notify(false);\n };\n this.setOptions(opts);\n }\n}\nconst findNearestBinarySearch = (low, high, getCurrentValue, value) => {\n while (low <= high) {\n const middle = (low + high) / 2 | 0;\n const currentValue = getCurrentValue(middle);\n if (currentValue < value) {\n low = middle + 1;\n } else if (currentValue > value) {\n high = middle - 1;\n } else {\n return middle;\n }\n }\n if (low > 0) {\n return low - 1;\n } else {\n return 0;\n }\n};\nfunction calculateRange({\n measurements,\n outerSize,\n scrollOffset,\n lanes\n}) {\n const lastIndex = measurements.length - 1;\n const getOffset = (index) => measurements[index].start;\n if (measurements.length <= lanes) {\n return {\n startIndex: 0,\n endIndex: lastIndex\n };\n }\n let startIndex = findNearestBinarySearch(\n 0,\n lastIndex,\n getOffset,\n scrollOffset\n );\n let endIndex = startIndex;\n if (lanes === 1) {\n while (endIndex < lastIndex && measurements[endIndex].end < scrollOffset + outerSize) {\n endIndex++;\n }\n } else if (lanes > 1) {\n const endPerLane = Array(lanes).fill(0);\n while (endIndex < lastIndex && endPerLane.some((pos) => pos < scrollOffset + outerSize)) {\n const item = measurements[endIndex];\n endPerLane[item.lane] = item.end;\n endIndex++;\n }\n const startPerLane = Array(lanes).fill(scrollOffset + outerSize);\n while (startIndex >= 0 && startPerLane.some((pos) => pos >= scrollOffset)) {\n const item = measurements[startIndex];\n startPerLane[item.lane] = item.start;\n startIndex--;\n }\n startIndex = Math.max(0, startIndex - startIndex % lanes);\n endIndex = Math.min(lastIndex, endIndex + (lanes - 1 - endIndex % lanes));\n }\n return { startIndex, endIndex };\n}\nexport {\n Virtualizer,\n approxEqual,\n debounce,\n defaultKeyExtractor,\n defaultRangeExtractor,\n elementScroll,\n measureElement,\n memo,\n notUndefined,\n observeElementOffset,\n observeElementRect,\n observeWindowOffset,\n observeWindowRect,\n windowScroll\n};\n//# sourceMappingURL=index.js.map\n","import * as React from \"react\";\nimport { flushSync } from \"react-dom\";\nimport { Virtualizer, elementScroll, observeElementOffset, observeElementRect, windowScroll, observeWindowOffset, observeWindowRect } from \"@tanstack/virtual-core\";\nexport * from \"@tanstack/virtual-core\";\nconst useIsomorphicLayoutEffect = typeof document !== \"undefined\" ? React.useLayoutEffect : React.useEffect;\nfunction useVirtualizerBase(options) {\n const rerender = React.useReducer(() => ({}), {})[1];\n const resolvedOptions = {\n ...options,\n onChange: (instance2, sync) => {\n var _a;\n if (sync) {\n flushSync(rerender);\n } else {\n rerender();\n }\n (_a = options.onChange) == null ? void 0 : _a.call(options, instance2, sync);\n }\n };\n const [instance] = React.useState(\n () => new Virtualizer(resolvedOptions)\n );\n instance.setOptions(resolvedOptions);\n useIsomorphicLayoutEffect(() => {\n return instance._didMount();\n }, []);\n useIsomorphicLayoutEffect(() => {\n return instance._willUpdate();\n });\n return instance;\n}\nfunction useVirtualizer(options) {\n return useVirtualizerBase({\n observeElementRect,\n observeElementOffset,\n scrollToFn: elementScroll,\n ...options\n });\n}\nfunction useWindowVirtualizer(options) {\n return useVirtualizerBase({\n getScrollElement: () => typeof document !== \"undefined\" ? window : null,\n observeElementRect: observeWindowRect,\n observeElementOffset: observeWindowOffset,\n scrollToFn: windowScroll,\n initialOffset: () => typeof document !== \"undefined\" ? window.scrollY : 0,\n ...options\n });\n}\nexport {\n useVirtualizer,\n useWindowVirtualizer\n};\n//# sourceMappingURL=index.js.map\n","import styled from \"@emotion/styled\";\nimport { Fragment, useRef, useState, type ReactNode } from \"react\";\nimport type {\n BaseTableItem,\n TableDef,\n TableDataProvider,\n TableProps,\n TableRow,\n} from \"./common/types\";\nimport { kosComponent } from \"@kosdev-code/kos-ui-sdk\";\nimport { getComponentTokenHelpers } from \"../../../styles\";\n// eslint-disable-next-line no-restricted-imports\nimport {\n flexRender,\n getCoreRowModel,\n getSortedRowModel,\n useReactTable,\n type SortingState,\n} from \"@tanstack/react-table\";\n// eslint-disable-next-line no-restricted-imports\nimport {\n useVirtualizer,\n VirtualItem,\n Virtualizer,\n} from \"@tanstack/react-virtual\";\nimport { useLoadDataProvider } from \"../list\";\nimport { TableContextProvider } from \"./common/context/use-table-context\";\nimport { StyledTableTd } from \"./common/style/styled-td\";\nimport { StyledTableTr } from \"./common/style/styled-tr\";\n\nconst [ct] = getComponentTokenHelpers([\"table\"]);\n\nconst DEFAULT_ITEMS = [];\n\nconst _getRowId = <T extends BaseTableItem>(row: T) => row.id;\n\nexport const VirtualTable: <\n T extends BaseTableItem,\n P extends TableDataProvider<T> = TableDataProvider<T>\n>(\n props: TableProps<T, P> & { className?: string }\n) => ReactNode = kosComponent(\n ({\n dataProvider,\n columns,\n className,\n getRowId,\n emptyState,\n isSortable,\n t,\n TdComponent,\n TrComponent,\n onListItemAction,\n renderEmptyAsStandalone,\n ...tableProps\n }) => {\n useLoadDataProvider(dataProvider);\n\n const tableContainerRef = useRef<HTMLDivElement | null>(null);\n\n const [sorting, setSorting] = useState<SortingState>([]);\n\n const table = useReactTable({\n columns,\n data: dataProvider ? dataProvider?.items : DEFAULT_ITEMS,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: isSortable ? getSortedRowModel() : undefined,\n getRowId: getRowId ?? _getRowId,\n onSortingChange: isSortable ? setSorting : undefined,\n state: {\n sorting,\n },\n });\n\n const isEmpty = !table.getRowModel().rows.length;\n\n if (isEmpty && renderEmptyAsStandalone) {\n return emptyState ?? null;\n }\n\n return (\n <TableContextProvider\n onListItemAction={onListItemAction}\n isSortable={isSortable}\n t={t}\n >\n <TableWrapper className={className} ref={tableContainerRef}>\n <StyledTable {...tableProps}>\n <Thead>\n {table.getHeaderGroups().map((headerGroup) => (\n <StyledTableTr key={headerGroup.id} style={{ display: \"flex\" }}>\n {headerGroup.headers.map((header) => (\n // Fragment is required here because flexRender doesnt work nice with the \"key\" prop\n <Fragment key={header.id}>\n {flexRender(header.column.columnDef.header, {\n ...header.getContext(),\n style: {\n display: \"flex\",\n width: header.getSize(),\n },\n })}\n </Fragment>\n ))}\n </StyledTableTr>\n ))}\n </Thead>\n <VirtualizedTableBody\n isEmpty={isEmpty}\n numColumns={columns.length}\n emptyState={emptyState}\n table={table}\n tableContainerRef={tableContainerRef}\n />\n </StyledTable>\n </TableWrapper>\n </TableContextProvider>\n );\n }\n);\n\ninterface VirtualizedTableBodyProps<T extends BaseTableItem> {\n table: TableDef<T>;\n tableContainerRef: React.RefObject<HTMLDivElement>;\n isEmpty: boolean;\n numColumns: number;\n emptyState?: ReactNode;\n trClassName?: string;\n}\n\nconst VirtualizedTableBody: <T extends BaseTableItem>(\n props: VirtualizedTableBodyProps<T>\n) => ReactNode = kosComponent(\n ({\n table,\n tableContainerRef,\n trClassName,\n isEmpty,\n emptyState,\n numColumns,\n }) => {\n const { rows } = table.getRowModel();\n\n const rowVirtualizer = useVirtualizer<HTMLDivElement, HTMLTableRowElement>({\n count: rows.length,\n estimateSize: () => 33,\n getScrollElement: () => tableContainerRef.current,\n // Measure dynamic row height, except in firefox because it measures table border height incorrectly\n measureElement:\n typeof window !== \"undefined\" &&\n navigator.userAgent.indexOf(\"Firefox\") === -1\n ? (element) => element?.getBoundingClientRect().height\n : undefined,\n overscan: 5,\n });\n\n return (\n <Tbody\n style={{\n position: \"relative\",\n height: `${rowVirtualizer.getTotalSize()}px`,\n }}\n >\n {!isEmpty ? (\n rowVirtualizer.getVirtualItems().map((virtualRow) => {\n const row = rows[virtualRow.index];\n return (\n <VirtualizedRow\n key={row.id}\n trClassName={trClassName}\n row={row}\n virtualRow={virtualRow}\n rowVirtualizer={rowVirtualizer}\n />\n );\n })\n ) : (\n <StyledTableTr>\n <StyledTableTd colSpan={numColumns}>\n {emptyState ?? null}\n </StyledTableTd>\n </StyledTableTr>\n )}\n </Tbody>\n );\n }\n);\n\ninterface VirtualizedRowProps<T extends BaseTableItem> {\n row: TableRow<T>;\n virtualRow: VirtualItem;\n rowVirtualizer: Virtualizer<HTMLDivElement, HTMLTableRowElement>;\n trClassName?: string;\n}\n\nconst VirtualizedRow: <T extends BaseTableItem>(\n props: VirtualizedRowProps<T>\n) => ReactNode = kosComponent(\n ({ trClassName, row, virtualRow, rowVirtualizer }) => (\n <StyledTableTr\n data-index={virtualRow.index} // Needed for dynamic row height measurement\n ref={(node) => rowVirtualizer.measureElement(node)}\n key={row.id}\n className={trClassName}\n style={{\n display: \"flex\",\n position: \"absolute\",\n transform: `translateY(${virtualRow.start}px)`,\n width: \"100%\",\n }}\n >\n {row.getVisibleCells().map((cell) => (\n <StyledTableTd\n key={cell.id}\n style={{\n display: \"flex\",\n width: cell.column.getSize(),\n }}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </StyledTableTd>\n ))}\n </StyledTableTr>\n )\n);\n\nconst TableWrapper = styled.div`\n width: 100%;\n display: grid;\n overflow: auto;\n`;\n\nconst StyledTable = styled.table`\n width: 100%;\n border-collapse: collapse;\n font-family: ${ct(\"font-family\")};\n table-layout: fixed;\n`;\n\nconst Thead = styled.thead`\n width: 100%;\n position: sticky;\n background-color: ${ct(\"header-background-color\")};\n top: 0;\n z-index: 1;\n`;\n\nconst Tbody = styled.tbody`\n width: 100%;\n`;\n","import styled from \"@emotion/styled\";\nimport { memo } from \"react\";\nimport {\n Button,\n ScreenOverlay,\n Text,\n type ScreenOverlayProps,\n} from \"../../atoms\";\nimport { getComponentTokenHelpers, getSemanticToken } from \"../../../styles\";\n\nconst [buttonCt] = getComponentTokenHelpers([\"button\"]);\n\ninterface ScreenOverlayWithActionProps\n extends Omit<ScreenOverlayProps, \"children\"> {\n onClick: () => void;\n buttonText: string;\n text: string;\n}\n\nexport const ScreenOverlayWithAction = memo(\n ({ onClick, open, buttonText, text }: ScreenOverlayWithActionProps) => (\n <StyledScreenOverlay open={open}>\n <ScreenOverlayInner>\n <Text variant=\"h2\" color=\"light\">\n {text}\n </Text>\n <Button variant=\"borderless\" text={buttonText} onClick={onClick} />\n </ScreenOverlayInner>\n </StyledScreenOverlay>\n )\n);\n\nconst StyledScreenOverlay = styled(ScreenOverlay)`\n z-index: 5;\n`;\n\nconst ScreenOverlayInner = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n row-gap: ${getSemanticToken(\"spacing-12\")};\n ${`${buttonCt(\"bg-borderless\", true)}: transparent`};\n ${`${buttonCt(\"border-borderless\", true)}: transparent`};\n ${`${buttonCt(\"color-borderless\", true)}: ${getSemanticToken(\n \"color-white\"\n )}`};\n ${`${buttonCt(\"border-hover-borderless\", true)}: ${getSemanticToken(\n \"color-white\"\n )}`};\n ${`${buttonCt(\"color-hover-borderless\", true)}: ${getSemanticToken(\n \"color-white\"\n )}`};\n ${`${buttonCt(\"bg-hover-borderless\", true)}: transparent`};\n`;\n","/**\n * Time zone name format.\n */\n\n/**\n * The function returns the time zone name for the given date in the specified\n * time zone.\n *\n * It uses the `Intl.DateTimeFormat` API and by default outputs the time zone\n * name in a long format, e.g. \"Pacific Standard Time\" or\n * \"Singapore Standard Time\".\n *\n * It is possible to specify the format as the third argument using one of the following options\n *\n * - \"short\": e.g. \"EDT\" or \"GMT+8\".\n * - \"long\": e.g. \"Eastern Daylight Time\".\n * - \"shortGeneric\": e.g. \"ET\" or \"Singapore Time\".\n * - \"longGeneric\": e.g. \"Eastern Time\" or \"Singapore Standard Time\".\n *\n * These options correspond to TR35 tokens `z..zzz`, `zzzz`, `v`, and `vvvv` respectively: https://www.unicode.org/reports/tr35/tr35-dates.html#dfst-zone\n *\n * @param timeZone - Time zone name (IANA or UTC offset)\n * @param date - Date object to get the time zone name for\n * @param format - Optional format of the time zone name. Defaults to \"long\". Can be \"short\", \"long\", \"shortGeneric\", or \"longGeneric\".\n *\n * @returns Time zone name (e.g. \"Singapore Standard Time\")\n */\nexport function tzName(timeZone, date, format = \"long\") {\n return new Intl.DateTimeFormat(\"en-US\", {\n // Enforces engine to render the time. Without the option JavaScriptCore omits it.\n hour: \"numeric\",\n timeZone: timeZone,\n timeZoneName: format\n }).format(date).split(/\\s/g) // Format.JS uses non-breaking spaces\n .slice(2) // Skip the hour and AM/PM parts\n .join(\" \");\n}","const offsetFormatCache = {};\nconst offsetCache = {};\n\n/**\n * The function extracts UTC offset in minutes from the given date in specified\n * time zone.\n *\n * Unlike `Date.prototype.getTimezoneOffset`, this function returns the value\n * mirrored to the sign of the offset in the time zone. For Asia/Singapore\n * (UTC+8), `tzOffset` returns 480, while `getTimezoneOffset` returns -480.\n *\n * @param timeZone - Time zone name (IANA or UTC offset)\n * @param date - Date to check the offset for\n *\n * @returns UTC offset in minutes\n */\nexport function tzOffset(timeZone, date) {\n try {\n const format = offsetFormatCache[timeZone] ||= new Intl.DateTimeFormat(\"en-US\", {\n timeZone,\n timeZoneName: \"longOffset\"\n }).format;\n const offsetStr = format(date).split(\"GMT\")[1];\n if (offsetStr in offsetCache) return offsetCache[offsetStr];\n return calcOffset(offsetStr, offsetStr.split(\":\"));\n } catch {\n // Fallback to manual parsing if the runtime doesn't support ±HH:MM/±HHMM/±HH\n // See: https://github.com/nodejs/node/issues/53419\n if (timeZone in offsetCache) return offsetCache[timeZone];\n const captures = timeZone?.match(offsetRe);\n if (captures) return calcOffset(timeZone, captures.slice(1));\n return NaN;\n }\n}\nconst offsetRe = /([+-]\\d\\d):?(\\d\\d)?/;\nfunction calcOffset(cacheStr, values) {\n const hours = +(values[0] || 0);\n const minutes = +(values[1] || 0);\n // Convert seconds to minutes by dividing by 60 to keep the function return in minutes.\n const seconds = +(values[2] || 0) / 60;\n return offsetCache[cacheStr] = hours * 60 + minutes > 0 ? hours * 60 + minutes + seconds : hours * 60 - minutes - seconds;\n}","import { tzOffset } from \"../tzOffset/index.js\";\nexport class TZDateMini extends Date {\n //#region static\n\n constructor(...args) {\n super();\n if (args.length > 1 && typeof args[args.length - 1] === \"string\") {\n this.timeZone = args.pop();\n }\n this.internal = new Date();\n if (isNaN(tzOffset(this.timeZone, this))) {\n this.setTime(NaN);\n } else {\n if (!args.length) {\n this.setTime(Date.now());\n } else if (typeof args[0] === \"number\" && (args.length === 1 || args.length === 2 && typeof args[1] !== \"number\")) {\n this.setTime(args[0]);\n } else if (typeof args[0] === \"string\") {\n this.setTime(+new Date(args[0]));\n } else if (args[0] instanceof Date) {\n this.setTime(+args[0]);\n } else {\n this.setTime(+new Date(...args));\n adjustToSystemTZ(this, NaN);\n syncToInternal(this);\n }\n }\n }\n static tz(tz, ...args) {\n return args.length ? new TZDateMini(...args, tz) : new TZDateMini(Date.now(), tz);\n }\n\n //#endregion\n\n //#region time zone\n\n withTimeZone(timeZone) {\n return new TZDateMini(+this, timeZone);\n }\n getTimezoneOffset() {\n const offset = -tzOffset(this.timeZone, this);\n // Remove the seconds offset\n // use Math.floor for negative GMT timezones and Math.ceil for positive GMT timezones.\n return offset > 0 ? Math.floor(offset) : Math.ceil(offset);\n }\n\n //#endregion\n\n //#region time\n\n setTime(time) {\n Date.prototype.setTime.apply(this, arguments);\n syncToInternal(this);\n return +this;\n }\n\n //#endregion\n\n //#region date-fns integration\n\n [Symbol.for(\"constructDateFrom\")](date) {\n return new TZDateMini(+new Date(date), this.timeZone);\n }\n\n //#endregion\n}\n\n// Assign getters and setters\nconst re = /^(get|set)(?!UTC)/;\nObject.getOwnPropertyNames(Date.prototype).forEach(method => {\n if (!re.test(method)) return;\n const utcMethod = method.replace(re, \"$1UTC\");\n // Filter out methods without UTC counterparts\n if (!TZDateMini.prototype[utcMethod]) return;\n if (method.startsWith(\"get\")) {\n // Delegate to internal date's UTC method\n TZDateMini.prototype[method] = function () {\n return this.internal[utcMethod]();\n };\n } else {\n // Assign regular setter\n TZDateMini.prototype[method] = function () {\n Date.prototype[utcMethod].apply(this.internal, arguments);\n syncFromInternal(this);\n return +this;\n };\n\n // Assign UTC setter\n TZDateMini.prototype[utcMethod] = function () {\n Date.prototype[utcMethod].apply(this, arguments);\n syncToInternal(this);\n return +this;\n };\n }\n});\n\n/**\n * Function syncs time to internal date, applying the time zone offset.\n *\n * @param {Date} date - Date to sync\n */\nfunction syncToInternal(date) {\n date.internal.setTime(+date);\n date.internal.setUTCSeconds(date.internal.getUTCSeconds() - Math.round(-tzOffset(date.timeZone, date) * 60));\n}\n\n/**\n * Function syncs the internal date UTC values to the date. It allows to get\n * accurate timestamp value.\n *\n * @param {Date} date - The date to sync\n */\nfunction syncFromInternal(date) {\n // First we transpose the internal values\n Date.prototype.setFullYear.call(date, date.internal.getUTCFullYear(), date.internal.getUTCMonth(), date.internal.getUTCDate());\n Date.prototype.setHours.call(date, date.internal.getUTCHours(), date.internal.getUTCMinutes(), date.internal.getUTCSeconds(), date.internal.getUTCMilliseconds());\n\n // Now we have to adjust the date to the system time zone\n adjustToSystemTZ(date);\n}\n\n/**\n * Function adjusts the date to the system time zone. It uses the time zone\n * differences to calculate the offset and adjust the date.\n *\n * @param {Date} date - Date to adjust\n */\nfunction adjustToSystemTZ(date) {\n // Save the time zone offset before all the adjustments\n const baseOffset = tzOffset(date.timeZone, date);\n // Remove the seconds offset\n // use Math.floor for negative GMT timezones and Math.ceil for positive GMT timezones.\n const offset = baseOffset > 0 ? Math.floor(baseOffset) : Math.ceil(baseOffset);\n //#region System DST adjustment\n\n // The biggest problem with using the system time zone is that when we create\n // a date from internal values stored in UTC, the system time zone might end\n // up on the DST hour:\n //\n // $ TZ=America/New_York node\n // > new Date(2020, 2, 8, 1).toString()\n // 'Sun Mar 08 2020 01:00:00 GMT-0500 (Eastern Standard Time)'\n // > new Date(2020, 2, 8, 2).toString()\n // 'Sun Mar 08 2020 03:00:00 GMT-0400 (Eastern Daylight Time)'\n // > new Date(2020, 2, 8, 3).toString()\n // 'Sun Mar 08 2020 03:00:00 GMT-0400 (Eastern Daylight Time)'\n // > new Date(2020, 2, 8, 4).toString()\n // 'Sun Mar 08 2020 04:00:00 GMT-0400 (Eastern Daylight Time)'\n //\n // Here we get the same hour for both 2 and 3, because the system time zone\n // has DST beginning at 8 March 2020, 2 a.m. and jumps to 3 a.m. So we have\n // to adjust the internal date to reflect that.\n //\n // However we want to adjust only if that's the DST hour the change happenes,\n // not the hour where DST moves to.\n\n // We calculate the previous hour to see if the time zone offset has changed\n // and we have landed on the DST hour.\n const prevHour = new Date(+date);\n // We use UTC methods here as we don't want to land on the same hour again\n // in case of DST.\n prevHour.setUTCHours(prevHour.getUTCHours() - 1);\n\n // Calculate if we are on the system DST hour.\n const systemOffset = -new Date(+date).getTimezoneOffset();\n const prevHourSystemOffset = -new Date(+prevHour).getTimezoneOffset();\n const systemDSTChange = systemOffset - prevHourSystemOffset;\n // Detect the DST shift. System DST change will occur both on\n const dstShift = Date.prototype.getHours.apply(date) !== date.internal.getUTCHours();\n\n // Move the internal date when we are on the system DST hour.\n if (systemDSTChange && dstShift) date.internal.setUTCMinutes(date.internal.getUTCMinutes() + systemDSTChange);\n\n //#endregion\n\n //#region System diff adjustment\n\n // Now we need to adjust the date, since we just applied internal values.\n // We need to calculate the difference between the system and date time zones\n // and apply it to the date.\n\n const offsetDiff = systemOffset - offset;\n if (offsetDiff) Date.prototype.setUTCMinutes.call(date, Date.prototype.getUTCMinutes.call(date) + offsetDiff);\n\n //#endregion\n\n //#region Seconds System diff adjustment\n\n const systemDate = new Date(+date);\n // Set the UTC seconds to 0 to isolate the timezone offset in seconds.\n systemDate.setUTCSeconds(0);\n // For negative systemOffset, invert the seconds.\n const systemSecondsOffset = systemOffset > 0 ? systemDate.getSeconds() : (systemDate.getSeconds() - 60) % 60;\n\n // Calculate the seconds offset based on the timezone offset.\n const secondsOffset = Math.round(-(tzOffset(date.timeZone, date) * 60)) % 60;\n if (secondsOffset || systemSecondsOffset) {\n date.internal.setUTCSeconds(date.internal.getUTCSeconds() + secondsOffset);\n Date.prototype.setUTCSeconds.call(date, Date.prototype.getUTCSeconds.call(date) + secondsOffset + systemSecondsOffset);\n }\n\n //#endregion\n\n //#region Post-adjustment DST fix\n\n const postBaseOffset = tzOffset(date.timeZone, date);\n // Remove the seconds offset\n // use Math.floor for negative GMT timezones and Math.ceil for positive GMT timezones.\n const postOffset = postBaseOffset > 0 ? Math.floor(postBaseOffset) : Math.ceil(postBaseOffset);\n const postSystemOffset = -new Date(+date).getTimezoneOffset();\n const postOffsetDiff = postSystemOffset - postOffset;\n const offsetChanged = postOffset !== offset;\n const postDiff = postOffsetDiff - offsetDiff;\n if (offsetChanged && postDiff) {\n Date.prototype.setUTCMinutes.call(date, Date.prototype.getUTCMinutes.call(date) + postDiff);\n\n // Now we need to check if got offset change during the post-adjustment.\n // If so, we also need both dates to reflect that.\n\n const newBaseOffset = tzOffset(date.timeZone, date);\n // Remove the seconds offset\n // use Math.floor for negative GMT timezones and Math.ceil for positive GMT timezones.\n const newOffset = newBaseOffset > 0 ? Math.floor(newBaseOffset) : Math.ceil(newBaseOffset);\n const offsetChange = postOffset - newOffset;\n if (offsetChange) {\n date.internal.setUTCMinutes(date.internal.getUTCMinutes() + offsetChange);\n Date.prototype.setUTCMinutes.call(date, Date.prototype.getUTCMinutes.call(date) + offsetChange);\n }\n }\n\n //#endregion\n}","import { tzName } from \"../tzName/index.js\";\nimport { TZDateMini } from \"./mini.js\";\nexport class TZDate extends TZDateMini {\n //#region static\n\n static tz(tz, ...args) {\n return args.length ? new TZDate(...args, tz) : new TZDate(Date.now(), tz);\n }\n\n //#endregion\n\n //#region representation\n\n toISOString() {\n const [sign, hours, minutes] = this.tzComponents();\n const tz = `${sign}${hours}:${minutes}`;\n return this.internal.toISOString().slice(0, -1) + tz;\n }\n toString() {\n // \"Tue Aug 13 2024 07:50:19 GMT+0800 (Singapore Standard Time)\";\n return `${this.toDateString()} ${this.toTimeString()}`;\n }\n toDateString() {\n // toUTCString returns RFC 7231 (\"Mon, 12 Aug 2024 23:36:08 GMT\")\n const [day, date, month, year] = this.internal.toUTCString().split(\" \");\n // \"Tue Aug 13 2024\"\n return `${day?.slice(0, -1) /* Remove \",\" */} ${month} ${date} ${year}`;\n }\n toTimeString() {\n // toUTCString returns RFC 7231 (\"Mon, 12 Aug 2024 23:36:08 GMT\")\n const time = this.internal.toUTCString().split(\" \")[4];\n const [sign, hours, minutes] = this.tzComponents();\n // \"07:42:23 GMT+0800 (Singapore Standard Time)\"\n return `${time} GMT${sign}${hours}${minutes} (${tzName(this.timeZone, this)})`;\n }\n toLocaleString(locales, options) {\n return Date.prototype.toLocaleString.call(this, locales, {\n ...options,\n timeZone: options?.timeZone || this.timeZone\n });\n }\n toLocaleDateString(locales, options) {\n return Date.prototype.toLocaleDateString.call(this, locales, {\n ...options,\n timeZone: options?.timeZone || this.timeZone\n });\n }\n toLocaleTimeString(locales, options) {\n return Date.prototype.toLocaleTimeString.call(this, locales, {\n ...options,\n timeZone: options?.timeZone || this.timeZone\n });\n }\n\n //#endregion\n\n //#region private\n\n tzComponents() {\n const offset = this.getTimezoneOffset();\n const sign = offset > 0 ? \"-\" : \"+\";\n const hours = String(Math.floor(Math.abs(offset) / 60)).padStart(2, \"0\");\n const minutes = String(Math.abs(offset) % 60).padStart(2, \"0\");\n return [sign, hours, minutes];\n }\n\n //#endregion\n\n withTimeZone(timeZone) {\n return new TZDate(+this, timeZone);\n }\n\n //#region date-fns integration\n\n [Symbol.for(\"constructDateFrom\")](date) {\n return new TZDate(+new Date(date), this.timeZone);\n }\n\n //#endregion\n}","const formatDistanceLocale = {\n lessThanXSeconds: {\n one: \"less than a second\",\n other: \"less than {{count}} seconds\",\n },\n\n xSeconds: {\n one: \"1 second\",\n other: \"{{count}} seconds\",\n },\n\n halfAMinute: \"half a minute\",\n\n lessThanXMinutes: {\n one: \"less than a minute\",\n other: \"less than {{count}} minutes\",\n },\n\n xMinutes: {\n one: \"1 minute\",\n other: \"{{count}} minutes\",\n },\n\n aboutXHours: {\n one: \"about 1 hour\",\n other: \"about {{count}} hours\",\n },\n\n xHours: {\n one: \"1 hour\",\n other: \"{{count}} hours\",\n },\n\n xDays: {\n one: \"1 day\",\n other: \"{{count}} days\",\n },\n\n aboutXWeeks: {\n one: \"about 1 week\",\n other: \"about {{count}} weeks\",\n },\n\n xWeeks: {\n one: \"1 week\",\n other: \"{{count}} weeks\",\n },\n\n aboutXMonths: {\n one: \"about 1 month\",\n other: \"about {{count}} months\",\n },\n\n xMonths: {\n one: \"1 month\",\n other: \"{{count}} months\",\n },\n\n aboutXYears: {\n one: \"about 1 year\",\n other: \"about {{count}} years\",\n },\n\n xYears: {\n one: \"1 year\",\n other: \"{{count}} years\",\n },\n\n overXYears: {\n one: \"over 1 year\",\n other: \"over {{count}} years\",\n },\n\n almostXYears: {\n one: \"almost 1 year\",\n other: \"almost {{count}} years\",\n },\n};\n\nexport const formatDistance = (token, count, options) => {\n let result;\n\n const tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === \"string\") {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace(\"{{count}}\", count.toString());\n }\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return \"in \" + result;\n } else {\n return result + \" ago\";\n }\n }\n\n return result;\n};\n","export function buildFormatLongFn(args) {\n return (options = {}) => {\n // TODO: Remove String()\n const width = options.width ? String(options.width) : args.defaultWidth;\n const format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.js\";\n\nconst dateFormats = {\n full: \"EEEE, MMMM do, y\",\n long: \"MMMM do, y\",\n medium: \"MMM d, y\",\n short: \"MM/dd/yyyy\",\n};\n\nconst timeFormats = {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: \"{{date}}, {{time}}\",\n short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: \"full\",\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: \"full\",\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: \"full\",\n }),\n};\n","const formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: \"P\",\n};\n\nexport const formatRelative = (token, _date, _baseDate, _options) =>\n formatRelativeLocale[token];\n","/**\n * The localize function argument callback which allows to convert raw value to\n * the actual type.\n *\n * @param value - The value to convert\n *\n * @returns The converted value\n */\n\n/**\n * The map of localized values for each width.\n */\n\n/**\n * The index type of the locale unit value. It types conversion of units of\n * values that don't start at 0 (i.e. quarters).\n */\n\n/**\n * Converts the unit value to the tuple of values.\n */\n\n/**\n * The tuple of localized era values. The first element represents BC,\n * the second element represents AD.\n */\n\n/**\n * The tuple of localized quarter values. The first element represents Q1.\n */\n\n/**\n * The tuple of localized day values. The first element represents Sunday.\n */\n\n/**\n * The tuple of localized month values. The first element represents January.\n */\n\nexport function buildLocalizeFn(args) {\n return (value, options) => {\n const context = options?.context ? String(options.context) : \"standalone\";\n\n let valuesArray;\n if (context === \"formatting\" && args.formattingValues) {\n const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n const width = options?.width ? String(options.width) : defaultWidth;\n\n valuesArray =\n args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n const defaultWidth = args.defaultWidth;\n const width = options?.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[width] || args.values[defaultWidth];\n }\n const index = args.argumentCallback ? args.argumentCallback(value) : value;\n\n // @ts-expect-error - For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.js\";\n\nconst eraValues = {\n narrow: [\"B\", \"A\"],\n abbreviated: [\"BC\", \"AD\"],\n wide: [\"Before Christ\", \"Anno Domini\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"],\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nconst monthValues = {\n narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n};\n\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n const number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n const rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + \"st\";\n case 2:\n return number + \"nd\";\n case 3:\n return number + \"rd\";\n }\n }\n return number + \"th\";\n};\n\nexport const localize = {\n ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n};\n","export function buildMatchFn(args) {\n return (string, options = {}) => {\n const width = options.width;\n\n const matchPattern =\n (width && args.matchPatterns[width]) ||\n args.matchPatterns[args.defaultMatchWidth];\n const matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n const matchedString = matchResult[0];\n\n const parsePatterns =\n (width && args.parsePatterns[width]) ||\n args.parsePatterns[args.defaultParseWidth];\n\n const key = Array.isArray(parsePatterns)\n ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString))\n : // [TODO] -- I challenge you to fix the type\n findKey(parsePatterns, (pattern) => pattern.test(matchedString));\n\n let value;\n\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback\n ? // [TODO] -- I challenge you to fix the type\n options.valueCallback(value)\n : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n\nfunction findKey(object, predicate) {\n for (const key in object) {\n if (\n Object.prototype.hasOwnProperty.call(object, key) &&\n predicate(object[key])\n ) {\n return key;\n }\n }\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (let key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}\n","export function buildMatchPatternFn(args) {\n return (string, options = {}) => {\n const matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n const matchedString = matchResult[0];\n\n const parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n let value = args.valueCallback\n ? args.valueCallback(parseResult[0])\n : parseResult[0];\n\n // [TODO] I challenge you to fix the type\n value = options.valueCallback ? options.valueCallback(value) : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n","import { buildMatchFn } from \"../../_lib/buildMatchFn.js\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.js\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i,\n};\nconst parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i,\n};\nconst parseMonthPatterns = {\n narrow: [\n /^j/i,\n /^f/i,\n /^m/i,\n /^a/i,\n /^m/i,\n /^j/i,\n /^j/i,\n /^a/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n\n any: [\n /^ja/i,\n /^f/i,\n /^mar/i,\n /^ap/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^au/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i,\n};\nconst parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i],\n};\n\nconst matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i,\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i,\n },\n};\n\nexport const match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: (value) => parseInt(value, 10),\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\",\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: (index) => index + 1,\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"any\",\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\",\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"any\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\",\n }),\n};\n","import { formatDistance } from \"./en-US/_lib/formatDistance.js\";\nimport { formatLong } from \"./en-US/_lib/formatLong.js\";\nimport { formatRelative } from \"./en-US/_lib/formatRelative.js\";\nimport { localize } from \"./en-US/_lib/localize.js\";\nimport { match } from \"./en-US/_lib/match.js\";\n\n/**\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp](https://github.com/kossnocorp)\n * @author Lesha Koss [@leshakoss](https://github.com/leshakoss)\n */\nexport const enUS = {\n code: \"en-US\",\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1,\n },\n};\n\n// Fallback for modularized imports:\nexport default enUS;\n","const FIVE_WEEKS = 5;\nconst FOUR_WEEKS = 4;\n/**\n * Returns the number of weeks to display in the broadcast calendar for a given\n * month.\n *\n * The broadcast calendar may have either 4 or 5 weeks in a month, depending on\n * the start and end dates of the broadcast weeks.\n *\n * @since 9.4.0\n * @param month The month for which to calculate the number of weeks.\n * @param dateLib The date library to use for date manipulation.\n * @returns The number of weeks in the broadcast calendar (4 or 5).\n */\nexport function getBroadcastWeeksInMonth(month, dateLib) {\n // Get the first day of the month\n const firstDayOfMonth = dateLib.startOfMonth(month);\n // Get the day of the week for the first day of the month (1-7, where 1 is Monday)\n const firstDayOfWeek = firstDayOfMonth.getDay() > 0 ? firstDayOfMonth.getDay() : 7;\n const broadcastStartDate = dateLib.addDays(month, -firstDayOfWeek + 1);\n const lastDateOfLastWeek = dateLib.addDays(broadcastStartDate, FIVE_WEEKS * 7 - 1);\n const numberOfWeeks = dateLib.getMonth(month) === dateLib.getMonth(lastDateOfLastWeek)\n ? FIVE_WEEKS\n : FOUR_WEEKS;\n return numberOfWeeks;\n}\n","/**\n * Returns the start date of the week in the broadcast calendar.\n *\n * The broadcast week starts on Monday. If the first day of the month is not a\n * Monday, this function calculates the previous Monday as the start of the\n * broadcast week.\n *\n * @since 9.4.0\n * @param date The date for which to calculate the start of the broadcast week.\n * @param dateLib The date library to use for date manipulation.\n * @returns The start date of the broadcast week.\n */\nexport function startOfBroadcastWeek(date, dateLib) {\n const firstOfMonth = dateLib.startOfMonth(date);\n const dayOfWeek = firstOfMonth.getDay();\n if (dayOfWeek === 1) {\n return firstOfMonth;\n }\n else if (dayOfWeek === 0) {\n return dateLib.addDays(firstOfMonth, -1 * 6);\n }\n else {\n return dateLib.addDays(firstOfMonth, -1 * (dayOfWeek - 1));\n }\n}\n","import { getBroadcastWeeksInMonth } from \"./getBroadcastWeeksInMonth.js\";\nimport { startOfBroadcastWeek } from \"./startOfBroadcastWeek.js\";\n/**\n * Returns the end date of the week in the broadcast calendar.\n *\n * The broadcast week ends on the last day of the last broadcast week for the\n * given date.\n *\n * @since 9.4.0\n * @param date The date for which to calculate the end of the broadcast week.\n * @param dateLib The date library to use for date manipulation.\n * @returns The end date of the broadcast week.\n */\nexport function endOfBroadcastWeek(date, dateLib) {\n const startDate = startOfBroadcastWeek(date, dateLib);\n const numberOfWeeks = getBroadcastWeeksInMonth(date, dateLib);\n const endDate = dateLib.addDays(startDate, numberOfWeeks * 7 - 1);\n return endDate;\n}\n","import { TZDate } from \"@date-fns/tz\";\nimport { addDays, addMonths, addWeeks, addYears, differenceInCalendarDays, differenceInCalendarMonths, eachMonthOfInterval, endOfISOWeek, endOfMonth, endOfWeek, endOfYear, format, getISOWeek, getMonth, getWeek, getYear, isAfter, isBefore, isDate, isSameDay, isSameMonth, isSameYear, max, min, setMonth, setYear, startOfDay, startOfISOWeek, startOfMonth, startOfWeek, startOfYear, } from \"date-fns\";\nimport { enUS } from \"date-fns/locale/en-US\";\nimport { endOfBroadcastWeek } from \"../helpers/endOfBroadcastWeek.js\";\nimport { startOfBroadcastWeek } from \"../helpers/startOfBroadcastWeek.js\";\n/**\n * A wrapper class around [date-fns](http://date-fns.org) that provides utility\n * methods for date manipulation and formatting.\n *\n * @since 9.2.0\n * @example\n * const dateLib = new DateLib({ locale: es });\n * const newDate = dateLib.addDays(new Date(), 5);\n */\nexport class DateLib {\n /**\n * Creates an instance of `DateLib`.\n *\n * @param options Configuration options for the date library.\n * @param overrides Custom overrides for the date library functions.\n */\n constructor(options, overrides) {\n /**\n * Reference to the built-in Date constructor.\n *\n * @deprecated Use `newDate()` or `today()`.\n */\n this.Date = Date;\n /**\n * Creates a new `Date` object representing today's date.\n *\n * @since 9.5.0\n * @returns A `Date` object for today's date.\n */\n this.today = () => {\n if (this.overrides?.today) {\n return this.overrides.today();\n }\n if (this.options.timeZone) {\n return TZDate.tz(this.options.timeZone);\n }\n return new this.Date();\n };\n /**\n * Creates a new `Date` object with the specified year, month, and day.\n *\n * @since 9.5.0\n * @param year The year.\n * @param monthIndex The month (0-11).\n * @param date The day of the month.\n * @returns A new `Date` object.\n */\n this.newDate = (year, monthIndex, date) => {\n if (this.overrides?.newDate) {\n return this.overrides.newDate(year, monthIndex, date);\n }\n if (this.options.timeZone) {\n return new TZDate(year, monthIndex, date, this.options.timeZone);\n }\n return new Date(year, monthIndex, date);\n };\n /**\n * Adds the specified number of days to the given date.\n *\n * @param date The date to add days to.\n * @param amount The number of days to add.\n * @returns The new date with the days added.\n */\n this.addDays = (date, amount) => {\n return this.overrides?.addDays\n ? this.overrides.addDays(date, amount)\n : addDays(date, amount);\n };\n /**\n * Adds the specified number of months to the given date.\n *\n * @param date The date to add months to.\n * @param amount The number of months to add.\n * @returns The new date with the months added.\n */\n this.addMonths = (date, amount) => {\n return this.overrides?.addMonths\n ? this.overrides.addMonths(date, amount)\n : addMonths(date, amount);\n };\n /**\n * Adds the specified number of weeks to the given date.\n *\n * @param date The date to add weeks to.\n * @param amount The number of weeks to add.\n * @returns The new date with the weeks added.\n */\n this.addWeeks = (date, amount) => {\n return this.overrides?.addWeeks\n ? this.overrides.addWeeks(date, amount)\n : addWeeks(date, amount);\n };\n /**\n * Adds the specified number of years to the given date.\n *\n * @param date The date to add years to.\n * @param amount The number of years to add.\n * @returns The new date with the years added.\n */\n this.addYears = (date, amount) => {\n return this.overrides?.addYears\n ? this.overrides.addYears(date, amount)\n : addYears(date, amount);\n };\n /**\n * Returns the number of calendar days between the given dates.\n *\n * @param dateLeft The later date.\n * @param dateRight The earlier date.\n * @returns The number of calendar days between the dates.\n */\n this.differenceInCalendarDays = (dateLeft, dateRight) => {\n return this.overrides?.differenceInCalendarDays\n ? this.overrides.differenceInCalendarDays(dateLeft, dateRight)\n : differenceInCalendarDays(dateLeft, dateRight);\n };\n /**\n * Returns the number of calendar months between the given dates.\n *\n * @param dateLeft The later date.\n * @param dateRight The earlier date.\n * @returns The number of calendar months between the dates.\n */\n this.differenceInCalendarMonths = (dateLeft, dateRight) => {\n return this.overrides?.differenceInCalendarMonths\n ? this.overrides.differenceInCalendarMonths(dateLeft, dateRight)\n : differenceInCalendarMonths(dateLeft, dateRight);\n };\n /**\n * Returns the months between the given dates.\n *\n * @param interval The interval to get the months for.\n */\n this.eachMonthOfInterval = (interval) => {\n return this.overrides?.eachMonthOfInterval\n ? this.overrides.eachMonthOfInterval(interval)\n : eachMonthOfInterval(interval);\n };\n /**\n * Returns the end of the broadcast week for the given date.\n *\n * @param date The original date.\n * @returns The end of the broadcast week.\n */\n this.endOfBroadcastWeek = (date) => {\n return this.overrides?.endOfBroadcastWeek\n ? this.overrides.endOfBroadcastWeek(date)\n : endOfBroadcastWeek(date, this);\n };\n /**\n * Returns the end of the ISO week for the given date.\n *\n * @param date The original date.\n * @returns The end of the ISO week.\n */\n this.endOfISOWeek = (date) => {\n return this.overrides?.endOfISOWeek\n ? this.overrides.endOfISOWeek(date)\n : endOfISOWeek(date);\n };\n /**\n * Returns the end of the month for the given date.\n *\n * @param date The original date.\n * @returns The end of the month.\n */\n this.endOfMonth = (date) => {\n return this.overrides?.endOfMonth\n ? this.overrides.endOfMonth(date)\n : endOfMonth(date);\n };\n /**\n * Returns the end of the week for the given date.\n *\n * @param date The original date.\n * @returns The end of the week.\n */\n this.endOfWeek = (date, options) => {\n return this.overrides?.endOfWeek\n ? this.overrides.endOfWeek(date, options)\n : endOfWeek(date, this.options);\n };\n /**\n * Returns the end of the year for the given date.\n *\n * @param date The original date.\n * @returns The end of the year.\n */\n this.endOfYear = (date) => {\n return this.overrides?.endOfYear\n ? this.overrides.endOfYear(date)\n : endOfYear(date);\n };\n /**\n * Formats the given date using the specified format string.\n *\n * @param date The date to format.\n * @param formatStr The format string.\n * @returns The formatted date string.\n */\n this.format = (date, formatStr, _options) => {\n const formatted = this.overrides?.format\n ? this.overrides.format(date, formatStr, this.options)\n : format(date, formatStr, this.options);\n if (this.options.numerals && this.options.numerals !== \"latn\") {\n return this.replaceDigits(formatted);\n }\n return formatted;\n };\n /**\n * Returns the ISO week number for the given date.\n *\n * @param date The date to get the ISO week number for.\n * @returns The ISO week number.\n */\n this.getISOWeek = (date) => {\n return this.overrides?.getISOWeek\n ? this.overrides.getISOWeek(date)\n : getISOWeek(date);\n };\n /**\n * Returns the month of the given date.\n *\n * @param date The date to get the month for.\n * @returns The month.\n */\n this.getMonth = (date, _options) => {\n return this.overrides?.getMonth\n ? this.overrides.getMonth(date, this.options)\n : getMonth(date, this.options);\n };\n /**\n * Returns the year of the given date.\n *\n * @param date The date to get the year for.\n * @returns The year.\n */\n this.getYear = (date, _options) => {\n return this.overrides?.getYear\n ? this.overrides.getYear(date, this.options)\n : getYear(date, this.options);\n };\n /**\n * Returns the local week number for the given date.\n *\n * @param date The date to get the week number for.\n * @returns The week number.\n */\n this.getWeek = (date, _options) => {\n return this.overrides?.getWeek\n ? this.overrides.getWeek(date, this.options)\n : getWeek(date, this.options);\n };\n /**\n * Checks if the first date is after the second date.\n *\n * @param date The date to compare.\n * @param dateToCompare The date to compare with.\n * @returns True if the first date is after the second date.\n */\n this.isAfter = (date, dateToCompare) => {\n return this.overrides?.isAfter\n ? this.overrides.isAfter(date, dateToCompare)\n : isAfter(date, dateToCompare);\n };\n /**\n * Checks if the first date is before the second date.\n *\n * @param date The date to compare.\n * @param dateToCompare The date to compare with.\n * @returns True if the first date is before the second date.\n */\n this.isBefore = (date, dateToCompare) => {\n return this.overrides?.isBefore\n ? this.overrides.isBefore(date, dateToCompare)\n : isBefore(date, dateToCompare);\n };\n /**\n * Checks if the given value is a Date object.\n *\n * @param value The value to check.\n * @returns True if the value is a Date object.\n */\n this.isDate = (value) => {\n return this.overrides?.isDate\n ? this.overrides.isDate(value)\n : isDate(value);\n };\n /**\n * Checks if the given dates are on the same day.\n *\n * @param dateLeft The first date to compare.\n * @param dateRight The second date to compare.\n * @returns True if the dates are on the same day.\n */\n this.isSameDay = (dateLeft, dateRight) => {\n return this.overrides?.isSameDay\n ? this.overrides.isSameDay(dateLeft, dateRight)\n : isSameDay(dateLeft, dateRight);\n };\n /**\n * Checks if the given dates are in the same month.\n *\n * @param dateLeft The first date to compare.\n * @param dateRight The second date to compare.\n * @returns True if the dates are in the same month.\n */\n this.isSameMonth = (dateLeft, dateRight) => {\n return this.overrides?.isSameMonth\n ? this.overrides.isSameMonth(dateLeft, dateRight)\n : isSameMonth(dateLeft, dateRight);\n };\n /**\n * Checks if the given dates are in the same year.\n *\n * @param dateLeft The first date to compare.\n * @param dateRight The second date to compare.\n * @returns True if the dates are in the same year.\n */\n this.isSameYear = (dateLeft, dateRight) => {\n return this.overrides?.isSameYear\n ? this.overrides.isSameYear(dateLeft, dateRight)\n : isSameYear(dateLeft, dateRight);\n };\n /**\n * Returns the latest date in the given array of dates.\n *\n * @param dates The array of dates to compare.\n * @returns The latest date.\n */\n this.max = (dates) => {\n return this.overrides?.max ? this.overrides.max(dates) : max(dates);\n };\n /**\n * Returns the earliest date in the given array of dates.\n *\n * @param dates The array of dates to compare.\n * @returns The earliest date.\n */\n this.min = (dates) => {\n return this.overrides?.min ? this.overrides.min(dates) : min(dates);\n };\n /**\n * Sets the month of the given date.\n *\n * @param date The date to set the month on.\n * @param month The month to set (0-11).\n * @returns The new date with the month set.\n */\n this.setMonth = (date, month) => {\n return this.overrides?.setMonth\n ? this.overrides.setMonth(date, month)\n : setMonth(date, month);\n };\n /**\n * Sets the year of the given date.\n *\n * @param date The date to set the year on.\n * @param year The year to set.\n * @returns The new date with the year set.\n */\n this.setYear = (date, year) => {\n return this.overrides?.setYear\n ? this.overrides.setYear(date, year)\n : setYear(date, year);\n };\n /**\n * Returns the start of the broadcast week for the given date.\n *\n * @param date The original date.\n * @returns The start of the broadcast week.\n */\n this.startOfBroadcastWeek = (date, _dateLib) => {\n return this.overrides?.startOfBroadcastWeek\n ? this.overrides.startOfBroadcastWeek(date, this)\n : startOfBroadcastWeek(date, this);\n };\n /**\n * Returns the start of the day for the given date.\n *\n * @param date The original date.\n * @returns The start of the day.\n */\n this.startOfDay = (date) => {\n return this.overrides?.startOfDay\n ? this.overrides.startOfDay(date)\n : startOfDay(date);\n };\n /**\n * Returns the start of the ISO week for the given date.\n *\n * @param date The original date.\n * @returns The start of the ISO week.\n */\n this.startOfISOWeek = (date) => {\n return this.overrides?.startOfISOWeek\n ? this.overrides.startOfISOWeek(date)\n : startOfISOWeek(date);\n };\n /**\n * Returns the start of the month for the given date.\n *\n * @param date The original date.\n * @returns The start of the month.\n */\n this.startOfMonth = (date) => {\n return this.overrides?.startOfMonth\n ? this.overrides.startOfMonth(date)\n : startOfMonth(date);\n };\n /**\n * Returns the start of the week for the given date.\n *\n * @param date The original date.\n * @returns The start of the week.\n */\n this.startOfWeek = (date, _options) => {\n return this.overrides?.startOfWeek\n ? this.overrides.startOfWeek(date, this.options)\n : startOfWeek(date, this.options);\n };\n /**\n * Returns the start of the year for the given date.\n *\n * @param date The original date.\n * @returns The start of the year.\n */\n this.startOfYear = (date) => {\n return this.overrides?.startOfYear\n ? this.overrides.startOfYear(date)\n : startOfYear(date);\n };\n this.options = { locale: enUS, ...options };\n this.overrides = overrides;\n }\n /**\n * Generates a mapping of Arabic digits (0-9) to the target numbering system\n * digits.\n *\n * @since 9.5.0\n * @returns A record mapping Arabic digits to the target numerals.\n */\n getDigitMap() {\n const { numerals = \"latn\" } = this.options;\n // Use Intl.NumberFormat to create a formatter with the specified numbering system\n const formatter = new Intl.NumberFormat(\"en-US\", {\n numberingSystem: numerals,\n });\n // Map Arabic digits (0-9) to the target numerals\n const digitMap = {};\n for (let i = 0; i < 10; i++) {\n digitMap[i.toString()] = formatter.format(i);\n }\n return digitMap;\n }\n /**\n * Replaces Arabic digits in a string with the target numbering system digits.\n *\n * @since 9.5.0\n * @param input The string containing Arabic digits.\n * @returns The string with digits replaced.\n */\n replaceDigits(input) {\n const digitMap = this.getDigitMap();\n return input.replace(/\\d/g, (digit) => digitMap[digit] || digit);\n }\n /**\n * Formats a number using the configured numbering system.\n *\n * @since 9.5.0\n * @param value The number to format.\n * @returns The formatted number as a string.\n */\n formatNumber(value) {\n return this.replaceDigits(value.toString());\n }\n}\n/** The default locale (English). */\nexport { enUS as defaultLocale } from \"date-fns/locale/en-US\";\n/**\n * The default date library with English locale.\n *\n * @since 9.2.0\n */\nexport const defaultDateLib = new DateLib();\n/**\n * @ignore\n * @deprecated Use `defaultDateLib`.\n */\nexport const dateLib = defaultDateLib;\n","import { defaultDateLib } from \"./DateLib.js\";\n/**\n * Represents a day displayed in the calendar.\n *\n * In DayPicker, a `CalendarDay` is a wrapper around a `Date` object that\n * provides additional information about the day, such as whether it belongs to\n * the displayed month.\n */\nexport class CalendarDay {\n constructor(date, displayMonth, dateLib = defaultDateLib) {\n this.date = date;\n this.displayMonth = displayMonth;\n this.outside = Boolean(displayMonth && !dateLib.isSameMonth(date, displayMonth));\n this.dateLib = dateLib;\n }\n /**\n * Checks if this day is equal to another `CalendarDay`, considering both the\n * date and the displayed month.\n *\n * @param day The `CalendarDay` to compare with.\n * @returns `true` if the days are equal, otherwise `false`.\n */\n isEqualTo(day) {\n return (this.dateLib.isSameDay(day.date, this.date) &&\n this.dateLib.isSameMonth(day.displayMonth, this.displayMonth));\n }\n}\n","/**\n * Represents a month in a calendar year.\n *\n * A `CalendarMonth` contains the weeks within the month and the date of the\n * month.\n */\nexport class CalendarMonth {\n constructor(month, weeks) {\n this.date = month;\n this.weeks = weeks;\n }\n}\n","/**\n * Represents a week in a calendar month.\n *\n * A `CalendarWeek` contains the days within the week and the week number.\n */\nexport class CalendarWeek {\n constructor(weekNumber, days) {\n this.days = days;\n this.weekNumber = weekNumber;\n }\n}\n","import React from \"react\";\n/**\n * Render the button elements in the calendar.\n *\n * @private\n * @deprecated Use `PreviousMonthButton` or `@link NextMonthButton` instead.\n */\nexport function Button(props) {\n return React.createElement(\"button\", { ...props });\n}\n","import React from \"react\";\n/**\n * Render the label in the month caption.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function CaptionLabel(props) {\n return React.createElement(\"span\", { ...props });\n}\n","import React from \"react\";\n/**\n * Render the chevron icon used in the navigation buttons and dropdowns.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Chevron(props) {\n const { size = 24, orientation = \"left\", className } = props;\n return (\n // biome-ignore lint/a11y/noSvgWithoutTitle: handled by the parent component\n React.createElement(\"svg\", { className: className, width: size, height: size, viewBox: \"0 0 24 24\" },\n orientation === \"up\" && (React.createElement(\"polygon\", { points: \"6.77 17 12.5 11.43 18.24 17 20 15.28 12.5 8 5 15.28\" })),\n orientation === \"down\" && (React.createElement(\"polygon\", { points: \"6.77 8 12.5 13.57 18.24 8 20 9.72 12.5 17 5 9.72\" })),\n orientation === \"left\" && (React.createElement(\"polygon\", { points: \"16 18.112 9.81111111 12 16 5.87733333 14.0888889 4 6 12 14.0888889 20\" })),\n orientation === \"right\" && (React.createElement(\"polygon\", { points: \"8 18.112 14.18888889 12 8 5.87733333 9.91111111 4 18 12 9.91111111 20\" }))));\n}\n","import React from \"react\";\n/**\n * Render a grid cell for a specific day in the calendar.\n *\n * Handles interaction and focus for the day. If you only need to change the\n * content of the day cell, consider swapping the `DayButton` component\n * instead.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Day(props) {\n const { day, modifiers, ...tdProps } = props;\n return React.createElement(\"td\", { ...tdProps });\n}\n","import React from \"react\";\n/**\n * Render a button for a specific day in the calendar.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function DayButton(props) {\n const { day, modifiers, ...buttonProps } = props;\n const ref = React.useRef(null);\n React.useEffect(() => {\n if (modifiers.focused)\n ref.current?.focus();\n }, [modifiers.focused]);\n return React.createElement(\"button\", { ref: ref, ...buttonProps });\n}\n","/**\n * Enum representing the UI elements composing DayPicker. These elements are\n * mapped to {@link CustomComponents}, {@link ClassNames}, and {@link Styles}.\n *\n * Some elements are extended by flags and modifiers.\n */\nexport var UI;\n(function (UI) {\n /** The root component displaying the months and the navigation bar. */\n UI[\"Root\"] = \"root\";\n /** The Chevron SVG element used by navigation buttons and dropdowns. */\n UI[\"Chevron\"] = \"chevron\";\n /**\n * The grid cell with the day's date. Extended by {@link DayFlag} and\n * {@link SelectionState}.\n */\n UI[\"Day\"] = \"day\";\n /** The button containing the formatted day's date, inside the grid cell. */\n UI[\"DayButton\"] = \"day_button\";\n /** The caption label of the month (when not showing the dropdown navigation). */\n UI[\"CaptionLabel\"] = \"caption_label\";\n /** The container of the dropdown navigation (when enabled). */\n UI[\"Dropdowns\"] = \"dropdowns\";\n /** The dropdown element to select for years and months. */\n UI[\"Dropdown\"] = \"dropdown\";\n /** The container element of the dropdown. */\n UI[\"DropdownRoot\"] = \"dropdown_root\";\n /** The root element of the footer. */\n UI[\"Footer\"] = \"footer\";\n /** The month grid. */\n UI[\"MonthGrid\"] = \"month_grid\";\n /** Contains the dropdown navigation or the caption label. */\n UI[\"MonthCaption\"] = \"month_caption\";\n /** The dropdown with the months. */\n UI[\"MonthsDropdown\"] = \"months_dropdown\";\n /** Wrapper of the month grid. */\n UI[\"Month\"] = \"month\";\n /** The container of the displayed months. */\n UI[\"Months\"] = \"months\";\n /** The navigation bar with the previous and next buttons. */\n UI[\"Nav\"] = \"nav\";\n /**\n * The next month button in the navigation. *\n *\n * @since 9.1.0\n */\n UI[\"NextMonthButton\"] = \"button_next\";\n /**\n * The previous month button in the navigation.\n *\n * @since 9.1.0\n */\n UI[\"PreviousMonthButton\"] = \"button_previous\";\n /** The row containing the week. */\n UI[\"Week\"] = \"week\";\n /** The group of row weeks in a month (`tbody`). */\n UI[\"Weeks\"] = \"weeks\";\n /** The column header with the weekday. */\n UI[\"Weekday\"] = \"weekday\";\n /** The row grouping the weekdays in the column headers. */\n UI[\"Weekdays\"] = \"weekdays\";\n /** The cell containing the week number. */\n UI[\"WeekNumber\"] = \"week_number\";\n /** The cell header of the week numbers column. */\n UI[\"WeekNumberHeader\"] = \"week_number_header\";\n /** The dropdown with the years. */\n UI[\"YearsDropdown\"] = \"years_dropdown\";\n})(UI || (UI = {}));\n/** Enum representing flags for the {@link UI.Day} element. */\nexport var DayFlag;\n(function (DayFlag) {\n /** The day is disabled. */\n DayFlag[\"disabled\"] = \"disabled\";\n /** The day is hidden. */\n DayFlag[\"hidden\"] = \"hidden\";\n /** The day is outside the current month. */\n DayFlag[\"outside\"] = \"outside\";\n /** The day is focused. */\n DayFlag[\"focused\"] = \"focused\";\n /** The day is today. */\n DayFlag[\"today\"] = \"today\";\n})(DayFlag || (DayFlag = {}));\n/**\n * Enum representing selection states that can be applied to the {@link UI.Day}\n * element in selection mode.\n */\nexport var SelectionState;\n(function (SelectionState) {\n /** The day is at the end of a selected range. */\n SelectionState[\"range_end\"] = \"range_end\";\n /** The day is at the middle of a selected range. */\n SelectionState[\"range_middle\"] = \"range_middle\";\n /** The day is at the start of a selected range. */\n SelectionState[\"range_start\"] = \"range_start\";\n /** The day is selected. */\n SelectionState[\"selected\"] = \"selected\";\n})(SelectionState || (SelectionState = {}));\n/**\n * Enum representing different animation states for transitioning between\n * months.\n */\nexport var Animation;\n(function (Animation) {\n /** The entering weeks when they appear before the exiting month. */\n Animation[\"weeks_before_enter\"] = \"weeks_before_enter\";\n /** The exiting weeks when they disappear before the entering month. */\n Animation[\"weeks_before_exit\"] = \"weeks_before_exit\";\n /** The entering weeks when they appear after the exiting month. */\n Animation[\"weeks_after_enter\"] = \"weeks_after_enter\";\n /** The exiting weeks when they disappear after the entering month. */\n Animation[\"weeks_after_exit\"] = \"weeks_after_exit\";\n /** The entering caption when it appears after the exiting month. */\n Animation[\"caption_after_enter\"] = \"caption_after_enter\";\n /** The exiting caption when it disappears after the entering month. */\n Animation[\"caption_after_exit\"] = \"caption_after_exit\";\n /** The entering caption when it appears before the exiting month. */\n Animation[\"caption_before_enter\"] = \"caption_before_enter\";\n /** The exiting caption when it disappears before the entering month. */\n Animation[\"caption_before_exit\"] = \"caption_before_exit\";\n})(Animation || (Animation = {}));\n","import React from \"react\";\nimport { UI } from \"../UI.js\";\n/**\n * Render a dropdown component for navigation in the calendar.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Dropdown(props) {\n const { options, className, components, classNames, ...selectProps } = props;\n const cssClassSelect = [classNames[UI.Dropdown], className].join(\" \");\n const selectedOption = options?.find(({ value }) => value === selectProps.value);\n return (React.createElement(\"span\", { \"data-disabled\": selectProps.disabled, className: classNames[UI.DropdownRoot] },\n React.createElement(components.Select, { className: cssClassSelect, ...selectProps }, options?.map(({ value, label, disabled }) => (React.createElement(components.Option, { key: value, value: value, disabled: disabled }, label)))),\n React.createElement(\"span\", { className: classNames[UI.CaptionLabel], \"aria-hidden\": true },\n selectedOption?.label,\n React.createElement(components.Chevron, { orientation: \"down\", size: 18, className: classNames[UI.Chevron] }))));\n}\n","import React from \"react\";\n/**\n * Render the navigation dropdowns for the calendar.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function DropdownNav(props) {\n return React.createElement(\"div\", { ...props });\n}\n","import React from \"react\";\n/**\n * Render the footer of the calendar.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Footer(props) {\n return React.createElement(\"div\", { ...props });\n}\n","import React from \"react\";\n/**\n * Render the grid with the weekday header row and the weeks for a specific\n * month.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Month(props) {\n const { calendarMonth, displayIndex, ...divProps } = props;\n return React.createElement(\"div\", { ...divProps }, props.children);\n}\n","import React from \"react\";\n/**\n * Render the caption for a month in the calendar.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function MonthCaption(props) {\n const { calendarMonth, displayIndex, ...divProps } = props;\n return React.createElement(\"div\", { ...divProps });\n}\n","import React from \"react\";\n/**\n * Render the grid of days for a specific month.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function MonthGrid(props) {\n return React.createElement(\"table\", { ...props });\n}\n","import React from \"react\";\n/**\n * Render a container wrapping the month grids.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Months(props) {\n return React.createElement(\"div\", { ...props });\n}\n","import { createContext, useContext } from \"react\";\n/** @ignore */\nexport const dayPickerContext = createContext(undefined);\n/**\n * Provides access to the DayPicker context, which includes properties and\n * methods to interact with the DayPicker component. This hook must be used\n * within a custom component.\n *\n * @template T - Use this type to refine the returned context type with a\n * specific selection mode.\n * @returns The context to work with DayPicker.\n * @throws {Error} If the hook is used outside of a DayPicker provider.\n * @group Hooks\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function useDayPicker() {\n const context = useContext(dayPickerContext);\n if (context === undefined) {\n throw new Error(\"useDayPicker() must be used within a custom component.\");\n }\n return context;\n}\n","import React from \"react\";\nimport { useDayPicker } from \"../useDayPicker.js\";\n/**\n * Render a dropdown to navigate between months in the calendar.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function MonthsDropdown(props) {\n const { components } = useDayPicker();\n return React.createElement(components.Dropdown, { ...props });\n}\n","import React, { useCallback, } from \"react\";\nimport { UI } from \"../UI.js\";\nimport { useDayPicker } from \"../useDayPicker.js\";\n/**\n * Render the navigation toolbar with buttons to navigate between months.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Nav(props) {\n const { onPreviousClick, onNextClick, previousMonth, nextMonth, ...navProps } = props;\n const { components, classNames, labels: { labelPrevious, labelNext }, } = useDayPicker();\n const handleNextClick = useCallback((e) => {\n if (nextMonth) {\n onNextClick?.(e);\n }\n }, [nextMonth, onNextClick]);\n const handlePreviousClick = useCallback((e) => {\n if (previousMonth) {\n onPreviousClick?.(e);\n }\n }, [previousMonth, onPreviousClick]);\n return (React.createElement(\"nav\", { ...navProps },\n React.createElement(components.PreviousMonthButton, { type: \"button\", className: classNames[UI.PreviousMonthButton], tabIndex: previousMonth ? undefined : -1, \"aria-disabled\": previousMonth ? undefined : true, \"aria-label\": labelPrevious(previousMonth), onClick: handlePreviousClick },\n React.createElement(components.Chevron, { disabled: previousMonth ? undefined : true, className: classNames[UI.Chevron], orientation: \"left\" })),\n React.createElement(components.NextMonthButton, { type: \"button\", className: classNames[UI.NextMonthButton], tabIndex: nextMonth ? undefined : -1, \"aria-disabled\": nextMonth ? undefined : true, \"aria-label\": labelNext(nextMonth), onClick: handleNextClick },\n React.createElement(components.Chevron, { disabled: nextMonth ? undefined : true, orientation: \"right\", className: classNames[UI.Chevron] }))));\n}\n","import React from \"react\";\nimport { useDayPicker } from \"../useDayPicker.js\";\n/**\n * Render the button to navigate to the next month in the calendar.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function NextMonthButton(props) {\n const { components } = useDayPicker();\n return React.createElement(components.Button, { ...props });\n}\n","import React from \"react\";\n/**\n * Render an `option` element.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Option(props) {\n return React.createElement(\"option\", { ...props });\n}\n","import React from \"react\";\nimport { useDayPicker } from \"../useDayPicker.js\";\n/**\n * Render the button to navigate to the previous month in the calendar.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function PreviousMonthButton(props) {\n const { components } = useDayPicker();\n return React.createElement(components.Button, { ...props });\n}\n","import React from \"react\";\n/**\n * Render the root element of the calendar.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Root(props) {\n const { rootRef, ...rest } = props;\n return React.createElement(\"div\", { ...rest, ref: rootRef });\n}\n","import React from \"react\";\n/**\n * Render a `select` element.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Select(props) {\n return React.createElement(\"select\", { ...props });\n}\n","import React from \"react\";\n/**\n * Render a table row representing a week in the calendar.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Week(props) {\n const { week, ...trProps } = props;\n return React.createElement(\"tr\", { ...trProps });\n}\n","import React from \"react\";\n/**\n * Render a table header cell with the name of a weekday (e.g., \"Mo\", \"Tu\").\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Weekday(props) {\n return React.createElement(\"th\", { ...props });\n}\n","import React from \"react\";\n/**\n * Render the table row containing the weekday names.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Weekdays(props) {\n return (React.createElement(\"thead\", { \"aria-hidden\": true },\n React.createElement(\"tr\", { ...props })));\n}\n","import React from \"react\";\n/**\n * Render a table cell displaying the number of the week.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function WeekNumber(props) {\n const { week, ...thProps } = props;\n return React.createElement(\"th\", { ...thProps });\n}\n","import React from \"react\";\n/**\n * Render the header cell for the week numbers column.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function WeekNumberHeader(props) {\n return React.createElement(\"th\", { ...props });\n}\n","import React from \"react\";\n/**\n * Render the container for the weeks in the month grid.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Weeks(props) {\n return React.createElement(\"tbody\", { ...props });\n}\n","import React from \"react\";\nimport { useDayPicker } from \"../useDayPicker.js\";\n/**\n * Render a dropdown to navigate between years in the calendar.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function YearsDropdown(props) {\n const { components } = useDayPicker();\n return React.createElement(components.Dropdown, { ...props });\n}\n","import { defaultDateLib } from \"../classes/index.js\";\n/**\n * Checks if a given date is within a specified date range.\n *\n * @since 9.0.0\n * @param range - The date range to check against.\n * @param date - The date to check.\n * @param excludeEnds - If `true`, the range's start and end dates are excluded.\n * @param dateLib - The date utility library instance.\n * @returns `true` if the date is within the range, otherwise `false`.\n * @group Utilities\n */\nexport function rangeIncludesDate(range, date, excludeEnds = false, dateLib = defaultDateLib) {\n let { from, to } = range;\n const { differenceInCalendarDays, isSameDay } = dateLib;\n if (from && to) {\n const isRangeInverted = differenceInCalendarDays(to, from) < 0;\n if (isRangeInverted) {\n [from, to] = [to, from];\n }\n const isInRange = differenceInCalendarDays(date, from) >= (excludeEnds ? 1 : 0) &&\n differenceInCalendarDays(to, date) >= (excludeEnds ? 1 : 0);\n return isInRange;\n }\n if (!excludeEnds && to) {\n return isSameDay(to, date);\n }\n if (!excludeEnds && from) {\n return isSameDay(from, date);\n }\n return false;\n}\n/**\n * @private\n * @deprecated Use {@link rangeIncludesDate} instead.\n */\nexport const isDateInRange = (range, date) => rangeIncludesDate(range, date, false, defaultDateLib);\n","/**\n * Checks if the given value is of type {@link DateInterval}.\n *\n * @param matcher - The value to check.\n * @returns `true` if the value is a {@link DateInterval}, otherwise `false`.\n * @group Utilities\n */\nexport function isDateInterval(matcher) {\n return Boolean(matcher &&\n typeof matcher === \"object\" &&\n \"before\" in matcher &&\n \"after\" in matcher);\n}\n/**\n * Checks if the given value is of type {@link DateRange}.\n *\n * @param value - The value to check.\n * @returns `true` if the value is a {@link DateRange}, otherwise `false`.\n * @group Utilities\n */\nexport function isDateRange(value) {\n return Boolean(value && typeof value === \"object\" && \"from\" in value);\n}\n/**\n * Checks if the given value is of type {@link DateAfter}.\n *\n * @param value - The value to check.\n * @returns `true` if the value is a {@link DateAfter}, otherwise `false`.\n * @group Utilities\n */\nexport function isDateAfterType(value) {\n return Boolean(value && typeof value === \"object\" && \"after\" in value);\n}\n/**\n * Checks if the given value is of type {@link DateBefore}.\n *\n * @param value - The value to check.\n * @returns `true` if the value is a {@link DateBefore}, otherwise `false`.\n * @group Utilities\n */\nexport function isDateBeforeType(value) {\n return Boolean(value && typeof value === \"object\" && \"before\" in value);\n}\n/**\n * Checks if the given value is of type {@link DayOfWeek}.\n *\n * @param value - The value to check.\n * @returns `true` if the value is a {@link DayOfWeek}, otherwise `false`.\n * @group Utilities\n */\nexport function isDayOfWeekType(value) {\n return Boolean(value && typeof value === \"object\" && \"dayOfWeek\" in value);\n}\n/**\n * Checks if the given value is an array of valid dates.\n *\n * @private\n * @param value - The value to check.\n * @param dateLib - The date utility library instance.\n * @returns `true` if the value is an array of valid dates, otherwise `false`.\n */\nexport function isDatesArray(value, dateLib) {\n return Array.isArray(value) && value.every(dateLib.isDate);\n}\n","import { defaultDateLib } from \"../classes/DateLib.js\";\nimport { rangeIncludesDate } from \"./rangeIncludesDate.js\";\nimport { isDateAfterType, isDateBeforeType, isDateInterval, isDateRange, isDatesArray, isDayOfWeekType, } from \"./typeguards.js\";\n/**\n * Checks if a given date matches at least one of the specified {@link Matcher}.\n *\n * @param date - The date to check.\n * @param matchers - The matchers to check against.\n * @param dateLib - The date utility library instance.\n * @returns `true` if the date matches any of the matchers, otherwise `false`.\n * @group Utilities\n */\nexport function dateMatchModifiers(date, matchers, dateLib = defaultDateLib) {\n const matchersArr = !Array.isArray(matchers) ? [matchers] : matchers;\n const { isSameDay, differenceInCalendarDays, isAfter } = dateLib;\n return matchersArr.some((matcher) => {\n if (typeof matcher === \"boolean\") {\n return matcher;\n }\n if (dateLib.isDate(matcher)) {\n return isSameDay(date, matcher);\n }\n if (isDatesArray(matcher, dateLib)) {\n return matcher.includes(date);\n }\n if (isDateRange(matcher)) {\n return rangeIncludesDate(matcher, date, false, dateLib);\n }\n if (isDayOfWeekType(matcher)) {\n if (!Array.isArray(matcher.dayOfWeek)) {\n return matcher.dayOfWeek === date.getDay();\n }\n return matcher.dayOfWeek.includes(date.getDay());\n }\n if (isDateInterval(matcher)) {\n const diffBefore = differenceInCalendarDays(matcher.before, date);\n const diffAfter = differenceInCalendarDays(matcher.after, date);\n const isDayBefore = diffBefore > 0;\n const isDayAfter = diffAfter < 0;\n const isClosedInterval = isAfter(matcher.before, matcher.after);\n if (isClosedInterval) {\n return isDayAfter && isDayBefore;\n }\n else {\n return isDayBefore || isDayAfter;\n }\n }\n if (isDateAfterType(matcher)) {\n return differenceInCalendarDays(date, matcher.after) > 0;\n }\n if (isDateBeforeType(matcher)) {\n return differenceInCalendarDays(matcher.before, date) > 0;\n }\n if (typeof matcher === \"function\") {\n return matcher(date);\n }\n return false;\n });\n}\n/**\n * @private\n * @deprecated Use {@link dateMatchModifiers} instead.\n */\nexport const isMatch = dateMatchModifiers;\n","import { DayFlag } from \"../UI.js\";\nimport { dateMatchModifiers } from \"../utils/dateMatchModifiers.js\";\n/**\n * Creates a function to retrieve the modifiers for a given day.\n *\n * This function calculates both internal and custom modifiers for each day\n * based on the provided calendar days and DayPicker props.\n *\n * @private\n * @param days The array of `CalendarDay` objects to process.\n * @param props The DayPicker props, including modifiers and configuration\n * options.\n * @param dateLib The date library to use for date manipulation.\n * @returns A function that retrieves the modifiers for a given `CalendarDay`.\n */\nexport function createGetModifiers(days, props, navStart, navEnd, dateLib) {\n const { disabled, hidden, modifiers, showOutsideDays, broadcastCalendar, today, } = props;\n const { isSameDay, isSameMonth, startOfMonth, isBefore, endOfMonth, isAfter, } = dateLib;\n const computedNavStart = navStart && startOfMonth(navStart);\n const computedNavEnd = navEnd && endOfMonth(navEnd);\n const internalModifiersMap = {\n [DayFlag.focused]: [],\n [DayFlag.outside]: [],\n [DayFlag.disabled]: [],\n [DayFlag.hidden]: [],\n [DayFlag.today]: [],\n };\n const customModifiersMap = {};\n for (const day of days) {\n const { date, displayMonth } = day;\n const isOutside = Boolean(displayMonth && !isSameMonth(date, displayMonth));\n const isBeforeNavStart = Boolean(computedNavStart && isBefore(date, computedNavStart));\n const isAfterNavEnd = Boolean(computedNavEnd && isAfter(date, computedNavEnd));\n const isDisabled = Boolean(disabled && dateMatchModifiers(date, disabled, dateLib));\n const isHidden = Boolean(hidden && dateMatchModifiers(date, hidden, dateLib)) ||\n isBeforeNavStart ||\n isAfterNavEnd ||\n // Broadcast calendar will show outside days as default\n (!broadcastCalendar && !showOutsideDays && isOutside) ||\n (broadcastCalendar && showOutsideDays === false && isOutside);\n const isToday = isSameDay(date, today ?? dateLib.today());\n if (isOutside)\n internalModifiersMap.outside.push(day);\n if (isDisabled)\n internalModifiersMap.disabled.push(day);\n if (isHidden)\n internalModifiersMap.hidden.push(day);\n if (isToday)\n internalModifiersMap.today.push(day);\n // Add custom modifiers\n if (modifiers) {\n Object.keys(modifiers).forEach((name) => {\n const modifierValue = modifiers?.[name];\n const isMatch = modifierValue\n ? dateMatchModifiers(date, modifierValue, dateLib)\n : false;\n if (!isMatch)\n return;\n if (customModifiersMap[name]) {\n customModifiersMap[name].push(day);\n }\n else {\n customModifiersMap[name] = [day];\n }\n });\n }\n }\n return (day) => {\n // Initialize all the modifiers to false\n const dayFlags = {\n [DayFlag.focused]: false,\n [DayFlag.disabled]: false,\n [DayFlag.hidden]: false,\n [DayFlag.outside]: false,\n [DayFlag.today]: false,\n };\n const customModifiers = {};\n // Find the modifiers for the given day\n for (const name in internalModifiersMap) {\n const days = internalModifiersMap[name];\n dayFlags[name] = days.some((d) => d === day);\n }\n for (const name in customModifiersMap) {\n customModifiers[name] = customModifiersMap[name].some((d) => d === day);\n }\n return {\n ...dayFlags,\n // custom modifiers should override all the previous ones\n ...customModifiers,\n };\n };\n}\n","import { DayFlag, SelectionState, UI } from \"../UI.js\";\n/**\n * Returns the class names for a day based on its modifiers.\n *\n * This function combines the base class name for the day with any class names\n * associated with active modifiers.\n *\n * @param modifiers The modifiers applied to the day.\n * @param classNames The base class names for the calendar elements.\n * @param modifiersClassNames The class names associated with specific\n * modifiers.\n * @returns An array of class names for the day.\n */\nexport function getClassNamesForModifiers(modifiers, classNames, modifiersClassNames = {}) {\n const modifierClassNames = Object.entries(modifiers)\n .filter(([, active]) => active === true)\n .reduce((previousValue, [key]) => {\n if (modifiersClassNames[key]) {\n previousValue.push(modifiersClassNames[key]);\n }\n else if (classNames[DayFlag[key]]) {\n previousValue.push(classNames[DayFlag[key]]);\n }\n else if (classNames[SelectionState[key]]) {\n previousValue.push(classNames[SelectionState[key]]);\n }\n return previousValue;\n }, [classNames[UI.Day]]);\n return modifierClassNames;\n}\n","import * as components from \"../components/custom-components.js\";\n/**\n * Merges custom components from the props with the default components.\n *\n * This function ensures that any custom components provided in the props\n * override the default components.\n *\n * @param customComponents The custom components provided in the DayPicker\n * props.\n * @returns An object containing the merged components.\n */\nexport function getComponents(customComponents) {\n return {\n ...components,\n ...customComponents,\n };\n}\n","/**\n * Extracts `data-` attributes from the DayPicker props.\n *\n * This function collects all `data-` attributes from the props and adds\n * additional attributes based on the DayPicker configuration.\n *\n * @param props The DayPicker props.\n * @returns An object containing the `data-` attributes.\n */\nexport function getDataAttributes(props) {\n const dataAttributes = {\n \"data-mode\": props.mode ?? undefined,\n \"data-required\": \"required\" in props ? props.required : undefined,\n \"data-multiple-months\": (props.numberOfMonths && props.numberOfMonths > 1) || undefined,\n \"data-week-numbers\": props.showWeekNumber || undefined,\n \"data-broadcast-calendar\": props.broadcastCalendar || undefined,\n \"data-nav-layout\": props.navLayout || undefined,\n };\n Object.entries(props).forEach(([key, val]) => {\n if (key.startsWith(\"data-\")) {\n dataAttributes[key] = val;\n }\n });\n return dataAttributes;\n}\n","import { Animation, DayFlag, SelectionState, UI } from \"../UI.js\";\n/**\n * Returns the default class names for the UI elements.\n *\n * This function generates a mapping of default class names for various UI\n * elements, day flags, selection states, and animations.\n *\n * @returns An object containing the default class names.\n * @group Utilities\n */\nexport function getDefaultClassNames() {\n const classNames = {};\n for (const key in UI) {\n classNames[UI[key]] =\n `rdp-${UI[key]}`;\n }\n for (const key in DayFlag) {\n classNames[DayFlag[key]] =\n `rdp-${DayFlag[key]}`;\n }\n for (const key in SelectionState) {\n classNames[SelectionState[key]] =\n `rdp-${SelectionState[key]}`;\n }\n for (const key in Animation) {\n classNames[Animation[key]] =\n `rdp-${Animation[key]}`;\n }\n return classNames;\n}\n","import { DateLib } from \"../classes/DateLib.js\";\n/**\n * Formats the caption of the month.\n *\n * @defaultValue `LLLL y` (e.g., \"November 2022\").\n * @param month The date representing the month.\n * @param options Configuration options for the date library.\n * @param dateLib The date library to use for formatting. If not provided, a new\n * instance is created.\n * @returns The formatted caption as a string.\n * @group Formatters\n * @see https://daypicker.dev/docs/translation#custom-formatters\n */\nexport function formatCaption(month, options, dateLib) {\n return (dateLib ?? new DateLib(options)).format(month, \"LLLL y\");\n}\n/**\n * @private\n * @deprecated Use {@link formatCaption} instead.\n * @group Formatters\n */\nexport const formatMonthCaption = formatCaption;\n","import { DateLib } from \"../classes/DateLib.js\";\n/**\n * Formats the day date shown in the day cell.\n *\n * @defaultValue `d` (e.g., \"1\").\n * @param date The date to format.\n * @param options Configuration options for the date library.\n * @param dateLib The date library to use for formatting. If not provided, a new\n * instance is created.\n * @returns The formatted day as a string.\n * @group Formatters\n * @see https://daypicker.dev/docs/translation#custom-formatters\n */\nexport function formatDay(date, options, dateLib) {\n return (dateLib ?? new DateLib(options)).format(date, \"d\");\n}\n","import { defaultDateLib } from \"../classes/DateLib.js\";\n/**\n * Formats the month for the dropdown option label.\n *\n * @defaultValue The localized full month name.\n * @param month The date representing the month.\n * @param dateLib The date library to use for formatting. Defaults to\n * `defaultDateLib`.\n * @returns The formatted month name as a string.\n * @group Formatters\n * @see https://daypicker.dev/docs/translation#custom-formatters\n */\nexport function formatMonthDropdown(month, dateLib = defaultDateLib) {\n return dateLib.format(month, \"LLLL\");\n}\n","import { DateLib } from \"../classes/DateLib.js\";\n/**\n * Formats the name of a weekday to be displayed in the weekdays header.\n *\n * @defaultValue `cccccc` (e.g., \"Mo\" for Monday).\n * @param weekday The date representing the weekday.\n * @param options Configuration options for the date library.\n * @param dateLib The date library to use for formatting. If not provided, a new\n * instance is created.\n * @returns The formatted weekday name as a string.\n * @group Formatters\n * @see https://daypicker.dev/docs/translation#custom-formatters\n */\nexport function formatWeekdayName(weekday, options, dateLib) {\n return (dateLib ?? new DateLib(options)).format(weekday, \"cccccc\");\n}\n","import { defaultDateLib } from \"../classes/DateLib.js\";\n/**\n * Formats the week number.\n *\n * @defaultValue The week number as a string, with a leading zero for single-digit numbers.\n * @param weekNumber The week number to format.\n * @param dateLib The date library to use for formatting. Defaults to\n * `defaultDateLib`.\n * @returns The formatted week number as a string.\n * @group Formatters\n * @see https://daypicker.dev/docs/translation#custom-formatters\n */\nexport function formatWeekNumber(weekNumber, dateLib = defaultDateLib) {\n if (weekNumber < 10) {\n return dateLib.formatNumber(`0${weekNumber.toLocaleString()}`);\n }\n return dateLib.formatNumber(`${weekNumber.toLocaleString()}`);\n}\n","/**\n * Formats the header for the week number column.\n *\n * @defaultValue An empty string `\"\"`.\n * @returns The formatted week number header as a string.\n * @group Formatters\n * @see https://daypicker.dev/docs/translation#custom-formatters\n */\nexport function formatWeekNumberHeader() {\n return ``;\n}\n","import { defaultDateLib } from \"../classes/DateLib.js\";\n/**\n * Formats the year for the dropdown option label.\n *\n * @param year The year to format.\n * @param dateLib The date library to use for formatting. Defaults to\n * `defaultDateLib`.\n * @returns The formatted year as a string.\n * @group Formatters\n * @see https://daypicker.dev/docs/translation#custom-formatters\n */\nexport function formatYearDropdown(year, dateLib = defaultDateLib) {\n return dateLib.format(year, \"yyyy\");\n}\n/**\n * @private\n * @deprecated Use `formatYearDropdown` instead.\n * @group Formatters\n */\nexport const formatYearCaption = formatYearDropdown;\n","import * as defaultFormatters from \"../formatters/index.js\";\n/**\n * Merges custom formatters from the props with the default formatters.\n *\n * @param customFormatters The custom formatters provided in the DayPicker\n * props.\n * @returns The merged formatters object.\n */\nexport function getFormatters(customFormatters) {\n if (customFormatters?.formatMonthCaption && !customFormatters.formatCaption) {\n customFormatters.formatCaption = customFormatters.formatMonthCaption;\n }\n if (customFormatters?.formatYearCaption &&\n !customFormatters.formatYearDropdown) {\n customFormatters.formatYearDropdown = customFormatters.formatYearCaption;\n }\n return {\n ...defaultFormatters,\n ...customFormatters,\n };\n}\n","/**\n * Returns the months to show in the dropdown.\n *\n * This function generates a list of months for the current year, formatted\n * using the provided formatter, and determines whether each month should be\n * disabled based on the navigation range.\n *\n * @param displayMonth The currently displayed month.\n * @param navStart The start date for navigation.\n * @param navEnd The end date for navigation.\n * @param formatters The formatters to use for formatting the month labels.\n * @param dateLib The date library to use for date manipulation.\n * @returns An array of dropdown options representing the months, or `undefined`\n * if no months are available.\n */\nexport function getMonthOptions(displayMonth, navStart, navEnd, formatters, dateLib) {\n const { startOfMonth, startOfYear, endOfYear, eachMonthOfInterval, getMonth, } = dateLib;\n const months = eachMonthOfInterval({\n start: startOfYear(displayMonth),\n end: endOfYear(displayMonth),\n });\n const options = months.map((month) => {\n const label = formatters.formatMonthDropdown(month, dateLib);\n const value = getMonth(month);\n const disabled = (navStart && month < startOfMonth(navStart)) ||\n (navEnd && month > startOfMonth(navEnd)) ||\n false;\n return { value, label, disabled };\n });\n return options;\n}\n","import { UI } from \"../UI.js\";\n/**\n * Returns the computed style for a day based on its modifiers.\n *\n * This function merges the base styles for the day with any styles associated\n * with active modifiers.\n *\n * @param dayModifiers The modifiers applied to the day.\n * @param styles The base styles for the calendar elements.\n * @param modifiersStyles The styles associated with specific modifiers.\n * @returns The computed style for the day.\n */\nexport function getStyleForModifiers(dayModifiers, styles = {}, modifiersStyles = {}) {\n let style = { ...styles?.[UI.Day] };\n Object.entries(dayModifiers)\n .filter(([, active]) => active === true)\n .forEach(([modifier]) => {\n style = {\n ...style,\n ...modifiersStyles?.[modifier],\n };\n });\n return style;\n}\n","/**\n * Generates a series of 7 days, starting from the beginning of the week, to use\n * for formatting weekday names (e.g., Monday, Tuesday, etc.).\n *\n * @param dateLib The date library to use for date manipulation.\n * @param ISOWeek Whether to use ISO week numbering (weeks start on Monday).\n * @param broadcastCalendar Whether to use the broadcast calendar (weeks start\n * on Monday, but may include adjustments for broadcast-specific rules).\n * @returns An array of 7 dates representing the weekdays.\n */\nexport function getWeekdays(dateLib, ISOWeek, broadcastCalendar) {\n const today = dateLib.today();\n const start = broadcastCalendar\n ? dateLib.startOfBroadcastWeek(today, dateLib)\n : ISOWeek\n ? dateLib.startOfISOWeek(today)\n : dateLib.startOfWeek(today);\n const days = [];\n for (let i = 0; i < 7; i++) {\n const day = dateLib.addDays(start, i);\n days.push(day);\n }\n return days;\n}\n","/**\n * Returns the years to display in the dropdown.\n *\n * This function generates a list of years between the navigation start and end\n * dates, formatted using the provided formatter.\n *\n * @param navStart The start date for navigation.\n * @param navEnd The end date for navigation.\n * @param formatters The formatters to use for formatting the year labels.\n * @param dateLib The date library to use for date manipulation.\n * @param reverse If true, reverses the order of the years (descending).\n * @returns An array of dropdown options representing the years, or `undefined`\n * if `navStart` or `navEnd` is not provided.\n */\nexport function getYearOptions(navStart, navEnd, formatters, dateLib, reverse = false) {\n if (!navStart)\n return undefined;\n if (!navEnd)\n return undefined;\n const { startOfYear, endOfYear, addYears, getYear, isBefore, isSameYear } = dateLib;\n const firstNavYear = startOfYear(navStart);\n const lastNavYear = endOfYear(navEnd);\n const years = [];\n let year = firstNavYear;\n while (isBefore(year, lastNavYear) || isSameYear(year, lastNavYear)) {\n years.push(year);\n year = addYears(year, 1);\n }\n if (reverse)\n years.reverse();\n return years.map((year) => {\n const label = formatters.formatYearDropdown(year, dateLib);\n return {\n value: getYear(year),\n label,\n disabled: false,\n };\n });\n}\n","import { DateLib } from \"../classes/DateLib.js\";\n/**\n * Generates the ARIA label for a day button.\n *\n * Use the `modifiers` argument to provide additional context for the label,\n * such as indicating if the day is \"today\" or \"selected.\"\n *\n * @defaultValue The formatted date.\n * @param date - The date to format.\n * @param modifiers - The modifiers providing context for the day.\n * @param options - Optional configuration for the date formatting library.\n * @param dateLib - An optional instance of the date formatting library.\n * @returns The ARIA label for the day button.\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelDayButton(date, modifiers, options, dateLib) {\n let label = (dateLib ?? new DateLib(options)).format(date, \"PPPP\");\n if (modifiers.today)\n label = `Today, ${label}`;\n if (modifiers.selected)\n label = `${label}, selected`;\n return label;\n}\n/**\n * @ignore\n * @deprecated Use `labelDayButton` instead.\n */\nexport const labelDay = labelDayButton;\n","import { DateLib } from \"../classes/DateLib.js\";\n/**\n * Generates the ARIA label for the month grid, which is announced when entering\n * the grid.\n *\n * @defaultValue `LLLL y` (e.g., \"November 2022\").\n * @param date - The date representing the month.\n * @param options - Optional configuration for the date formatting library.\n * @param dateLib - An optional instance of the date formatting library.\n * @returns The ARIA label for the month grid.\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelGrid(date, options, dateLib) {\n return (dateLib ?? new DateLib(options)).format(date, \"LLLL y\");\n}\n/**\n * @ignore\n * @deprecated Use {@link labelGrid} instead.\n */\nexport const labelCaption = labelGrid;\n","import { DateLib } from \"../classes/DateLib.js\";\n/**\n * Generates the label for a day grid cell when the calendar is not interactive.\n *\n * @param date - The date to format.\n * @param modifiers - Optional modifiers providing context for the day.\n * @param options - Optional configuration for the date formatting library.\n * @param dateLib - An optional instance of the date formatting library.\n * @returns The label for the day grid cell.\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelGridcell(date, modifiers, options, dateLib) {\n let label = (dateLib ?? new DateLib(options)).format(date, \"PPPP\");\n if (modifiers?.today) {\n label = `Today, ${label}`;\n }\n return label;\n}\n","/**\n * Generates the ARIA label for the months dropdown.\n *\n * @defaultValue `\"Choose the Month\"`\n * @param options - Optional configuration for the date formatting library.\n * @returns The ARIA label for the months dropdown.\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelMonthDropdown(_options) {\n return \"Choose the Month\";\n}\n","/**\n * Generates the ARIA label for the navigation toolbar.\n *\n * @defaultValue `\"\"`\n * @returns The ARIA label for the navigation toolbar.\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelNav() {\n return \"\";\n}\n","/**\n * Generates the ARIA label for the \"next month\" button.\n *\n * @defaultValue `\"Go to the Next Month\"`\n * @param month - The date representing the next month, or `undefined` if there\n * is no next month.\n * @returns The ARIA label for the \"next month\" button.\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelNext(_month) {\n return \"Go to the Next Month\";\n}\n","/**\n * Generates the ARIA label for the \"previous month\" button.\n *\n * @defaultValue `\"Go to the Previous Month\"`\n * @param month - The date representing the previous month, or `undefined` if\n * there is no previous month.\n * @returns The ARIA label for the \"previous month\" button.\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelPrevious(_month) {\n return \"Go to the Previous Month\";\n}\n","import { DateLib } from \"../classes/DateLib.js\";\n/**\n * Generates the ARIA label for a weekday column header.\n *\n * @defaultValue `\"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\", \"Sunday\"`\n * @param date - The date representing the weekday.\n * @param options - Optional configuration for the date formatting library.\n * @param dateLib - An optional instance of the date formatting library.\n * @returns The ARIA label for the weekday column header.\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelWeekday(date, options, dateLib) {\n return (dateLib ?? new DateLib(options)).format(date, \"cccc\");\n}\n","/**\n * Generates the ARIA label for the week number cell (the first cell in a row).\n *\n * @defaultValue `Week ${weekNumber}`\n * @param weekNumber - The number of the week.\n * @param options - Optional configuration for the date formatting library.\n * @returns The ARIA label for the week number cell.\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelWeekNumber(weekNumber, _options) {\n return `Week ${weekNumber}`;\n}\n","/**\n * Generates the ARIA label for the week number header element.\n *\n * @defaultValue `\"Week Number\"`\n * @param options - Optional configuration for the date formatting library.\n * @returns The ARIA label for the week number header.\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelWeekNumberHeader(_options) {\n return \"Week Number\";\n}\n","/**\n * Generates the ARIA label for the years dropdown.\n *\n * @defaultValue `\"Choose the Year\"`\n * @param options - Optional configuration for the date formatting library.\n * @returns The ARIA label for the years dropdown.\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelYearDropdown(_options) {\n return \"Choose the Year\";\n}\n","import { useLayoutEffect, useRef } from \"react\";\nimport { Animation } from \"./UI.js\";\nconst asHtmlElement = (element) => {\n if (element instanceof HTMLElement)\n return element;\n return null;\n};\nconst queryMonthEls = (element) => [\n ...(element.querySelectorAll(\"[data-animated-month]\") ?? []),\n];\nconst queryMonthEl = (element) => asHtmlElement(element.querySelector(\"[data-animated-month]\"));\nconst queryCaptionEl = (element) => asHtmlElement(element.querySelector(\"[data-animated-caption]\"));\nconst queryWeeksEl = (element) => asHtmlElement(element.querySelector(\"[data-animated-weeks]\"));\nconst queryNavEl = (element) => asHtmlElement(element.querySelector(\"[data-animated-nav]\"));\nconst queryWeekdaysEl = (element) => asHtmlElement(element.querySelector(\"[data-animated-weekdays]\"));\n/**\n * Handles animations for transitioning between months in the DayPicker\n * component.\n *\n * @private\n * @param rootElRef - A reference to the root element of the DayPicker\n * component.\n * @param enabled - Whether animations are enabled.\n * @param options - Configuration options for the animation, including class\n * names, months, focused day, and the date utility library.\n */\nexport function useAnimation(rootElRef, enabled, { classNames, months, focused, dateLib, }) {\n const previousRootElSnapshotRef = useRef(null);\n const previousMonthsRef = useRef(months);\n const animatingRef = useRef(false);\n useLayoutEffect(() => {\n // get previous months before updating the previous months ref\n const previousMonths = previousMonthsRef.current;\n // update previous months ref for next effect trigger\n previousMonthsRef.current = months;\n if (!enabled ||\n !rootElRef.current ||\n // safety check because the ref can be set to anything by consumers\n !(rootElRef.current instanceof HTMLElement) ||\n // validation required for the animation to work as expected\n months.length === 0 ||\n previousMonths.length === 0 ||\n months.length !== previousMonths.length) {\n return;\n }\n const isSameMonth = dateLib.isSameMonth(months[0].date, previousMonths[0].date);\n const isAfterPreviousMonth = dateLib.isAfter(months[0].date, previousMonths[0].date);\n const captionAnimationClass = isAfterPreviousMonth\n ? classNames[Animation.caption_after_enter]\n : classNames[Animation.caption_before_enter];\n const weeksAnimationClass = isAfterPreviousMonth\n ? classNames[Animation.weeks_after_enter]\n : classNames[Animation.weeks_before_enter];\n // get previous root element snapshot before updating the snapshot ref\n const previousRootElSnapshot = previousRootElSnapshotRef.current;\n // update snapshot for next effect trigger\n const rootElSnapshot = rootElRef.current.cloneNode(true);\n if (rootElSnapshot instanceof HTMLElement) {\n // if this effect is triggered while animating, we need to clean up the new root snapshot\n // to put it in the same state as when not animating, to correctly animate the next month change\n const currentMonthElsSnapshot = queryMonthEls(rootElSnapshot);\n currentMonthElsSnapshot.forEach((currentMonthElSnapshot) => {\n if (!(currentMonthElSnapshot instanceof HTMLElement))\n return;\n // remove the old month snapshots from the new root snapshot\n const previousMonthElSnapshot = queryMonthEl(currentMonthElSnapshot);\n if (previousMonthElSnapshot &&\n currentMonthElSnapshot.contains(previousMonthElSnapshot)) {\n currentMonthElSnapshot.removeChild(previousMonthElSnapshot);\n }\n // remove animation classes from the new month snapshots\n const captionEl = queryCaptionEl(currentMonthElSnapshot);\n if (captionEl) {\n captionEl.classList.remove(captionAnimationClass);\n }\n const weeksEl = queryWeeksEl(currentMonthElSnapshot);\n if (weeksEl) {\n weeksEl.classList.remove(weeksAnimationClass);\n }\n });\n previousRootElSnapshotRef.current = rootElSnapshot;\n }\n else {\n previousRootElSnapshotRef.current = null;\n }\n if (animatingRef.current ||\n isSameMonth ||\n // skip animation if a day is focused because it can cause issues to the animation and is better for a11y\n focused) {\n return;\n }\n const previousMonthEls = previousRootElSnapshot instanceof HTMLElement\n ? queryMonthEls(previousRootElSnapshot)\n : [];\n const currentMonthEls = queryMonthEls(rootElRef.current);\n if (currentMonthEls?.every((el) => el instanceof HTMLElement) &&\n previousMonthEls &&\n previousMonthEls.every((el) => el instanceof HTMLElement)) {\n animatingRef.current = true;\n const cleanUpFunctions = [];\n // set isolation to isolate to isolate the stacking context during animation\n rootElRef.current.style.isolation = \"isolate\";\n // set z-index to 1 to ensure the nav is clickable over the other elements being animated\n const navEl = queryNavEl(rootElRef.current);\n if (navEl) {\n navEl.style.zIndex = \"1\";\n }\n currentMonthEls.forEach((currentMonthEl, index) => {\n const previousMonthEl = previousMonthEls[index];\n if (!previousMonthEl) {\n return;\n }\n // animate new displayed month\n currentMonthEl.style.position = \"relative\";\n currentMonthEl.style.overflow = \"hidden\";\n const captionEl = queryCaptionEl(currentMonthEl);\n if (captionEl) {\n captionEl.classList.add(captionAnimationClass);\n }\n const weeksEl = queryWeeksEl(currentMonthEl);\n if (weeksEl) {\n weeksEl.classList.add(weeksAnimationClass);\n }\n // animate new displayed month end\n const cleanUp = () => {\n animatingRef.current = false;\n if (rootElRef.current) {\n rootElRef.current.style.isolation = \"\";\n }\n if (navEl) {\n navEl.style.zIndex = \"\";\n }\n if (captionEl) {\n captionEl.classList.remove(captionAnimationClass);\n }\n if (weeksEl) {\n weeksEl.classList.remove(weeksAnimationClass);\n }\n currentMonthEl.style.position = \"\";\n currentMonthEl.style.overflow = \"\";\n if (currentMonthEl.contains(previousMonthEl)) {\n currentMonthEl.removeChild(previousMonthEl);\n }\n };\n cleanUpFunctions.push(cleanUp);\n // animate old displayed month\n previousMonthEl.style.pointerEvents = \"none\";\n previousMonthEl.style.position = \"absolute\";\n previousMonthEl.style.overflow = \"hidden\";\n previousMonthEl.setAttribute(\"aria-hidden\", \"true\");\n // hide the weekdays container of the old month and only the new one\n const previousWeekdaysEl = queryWeekdaysEl(previousMonthEl);\n if (previousWeekdaysEl) {\n previousWeekdaysEl.style.opacity = \"0\";\n }\n const previousCaptionEl = queryCaptionEl(previousMonthEl);\n if (previousCaptionEl) {\n previousCaptionEl.classList.add(isAfterPreviousMonth\n ? classNames[Animation.caption_before_exit]\n : classNames[Animation.caption_after_exit]);\n previousCaptionEl.addEventListener(\"animationend\", cleanUp);\n }\n const previousWeeksEl = queryWeeksEl(previousMonthEl);\n if (previousWeeksEl) {\n previousWeeksEl.classList.add(isAfterPreviousMonth\n ? classNames[Animation.weeks_before_exit]\n : classNames[Animation.weeks_after_exit]);\n }\n currentMonthEl.insertBefore(previousMonthEl, currentMonthEl.firstChild);\n });\n }\n });\n}\n","/**\n * Returns all the dates to display in the calendar.\n *\n * This function calculates the range of dates to display based on the provided\n * display months, constraints, and calendar configuration.\n *\n * @param displayMonths The months to display in the calendar.\n * @param maxDate The maximum date to include in the range.\n * @param props The DayPicker props, including calendar configuration options.\n * @param dateLib The date library to use for date manipulation.\n * @returns An array of dates to display in the calendar.\n */\nexport function getDates(displayMonths, maxDate, props, dateLib) {\n const firstMonth = displayMonths[0];\n const lastMonth = displayMonths[displayMonths.length - 1];\n const { ISOWeek, fixedWeeks, broadcastCalendar } = props ?? {};\n const { addDays, differenceInCalendarDays, differenceInCalendarMonths, endOfBroadcastWeek, endOfISOWeek, endOfMonth, endOfWeek, isAfter, startOfBroadcastWeek, startOfISOWeek, startOfWeek, } = dateLib;\n const startWeekFirstDate = broadcastCalendar\n ? startOfBroadcastWeek(firstMonth, dateLib)\n : ISOWeek\n ? startOfISOWeek(firstMonth)\n : startOfWeek(firstMonth);\n const endWeekLastDate = broadcastCalendar\n ? endOfBroadcastWeek(lastMonth)\n : ISOWeek\n ? endOfISOWeek(endOfMonth(lastMonth))\n : endOfWeek(endOfMonth(lastMonth));\n const nOfDays = differenceInCalendarDays(endWeekLastDate, startWeekFirstDate);\n const nOfMonths = differenceInCalendarMonths(lastMonth, firstMonth) + 1;\n const dates = [];\n for (let i = 0; i <= nOfDays; i++) {\n const date = addDays(startWeekFirstDate, i);\n if (maxDate && isAfter(date, maxDate)) {\n break;\n }\n dates.push(date);\n }\n // If fixed weeks is enabled, add the extra dates to the array\n const nrOfDaysWithFixedWeeks = broadcastCalendar ? 35 : 42;\n const extraDates = nrOfDaysWithFixedWeeks * nOfMonths;\n if (fixedWeeks && dates.length < extraDates) {\n const daysToAdd = extraDates - dates.length;\n for (let i = 0; i < daysToAdd; i++) {\n const date = addDays(dates[dates.length - 1], 1);\n dates.push(date);\n }\n }\n return dates;\n}\n","/**\n * Returns all the days belonging to the calendar by merging the days in the\n * weeks for each month.\n *\n * @param calendarMonths The array of calendar months.\n * @returns An array of `CalendarDay` objects representing all the days in the\n * calendar.\n */\nexport function getDays(calendarMonths) {\n const initialDays = [];\n return calendarMonths.reduce((days, month) => {\n const weekDays = month.weeks.reduce((weekDays, week) => {\n return weekDays.concat(week.days.slice());\n }, initialDays.slice());\n return days.concat(weekDays.slice());\n }, initialDays.slice());\n}\n","/**\n * Returns the months to display in the calendar.\n *\n * @param firstDisplayedMonth The first month currently displayed in the\n * calendar.\n * @param calendarEndMonth The latest month the user can navigate to.\n * @param props The DayPicker props, including `numberOfMonths`.\n * @param dateLib The date library to use for date manipulation.\n * @returns An array of dates representing the months to display.\n */\nexport function getDisplayMonths(firstDisplayedMonth, calendarEndMonth, props, dateLib) {\n const { numberOfMonths = 1 } = props;\n const months = [];\n for (let i = 0; i < numberOfMonths; i++) {\n const month = dateLib.addMonths(firstDisplayedMonth, i);\n if (calendarEndMonth && month > calendarEndMonth) {\n break;\n }\n months.push(month);\n }\n return months;\n}\n","/**\n * Determines the initial month to display in the calendar based on the provided\n * props.\n *\n * This function calculates the starting month, considering constraints such as\n * `startMonth`, `endMonth`, and the number of months to display.\n *\n * @param props The DayPicker props, including navigation and date constraints.\n * @param dateLib The date library to use for date manipulation.\n * @returns The initial month to display.\n */\nexport function getInitialMonth(props, navStart, navEnd, dateLib) {\n const { month, defaultMonth, today = dateLib.today(), numberOfMonths = 1, } = props;\n let initialMonth = month || defaultMonth || today;\n const { differenceInCalendarMonths, addMonths, startOfMonth } = dateLib;\n if (navEnd &&\n differenceInCalendarMonths(navEnd, initialMonth) < numberOfMonths - 1) {\n const offset = -1 * (numberOfMonths - 1);\n initialMonth = addMonths(navEnd, offset);\n }\n if (navStart && differenceInCalendarMonths(initialMonth, navStart) < 0) {\n initialMonth = navStart;\n }\n return startOfMonth(initialMonth);\n}\n","import { CalendarDay, CalendarMonth, CalendarWeek } from \"../classes/index.js\";\n/**\n * Returns the months to display in the calendar.\n *\n * This function generates `CalendarMonth` objects for each month to be\n * displayed, including their weeks and days, based on the provided display\n * months and dates.\n *\n * @param displayMonths The months (as dates) to display in the calendar.\n * @param dates The dates to display in the calendar.\n * @param props Options from the DayPicker props context.\n * @param dateLib The date library to use for date manipulation.\n * @returns An array of `CalendarMonth` objects representing the months to\n * display.\n */\nexport function getMonths(displayMonths, dates, props, dateLib) {\n const { addDays, endOfBroadcastWeek, endOfISOWeek, endOfMonth, endOfWeek, getISOWeek, getWeek, startOfBroadcastWeek, startOfISOWeek, startOfWeek, } = dateLib;\n const dayPickerMonths = displayMonths.reduce((months, month) => {\n const firstDateOfFirstWeek = props.broadcastCalendar\n ? startOfBroadcastWeek(month, dateLib)\n : props.ISOWeek\n ? startOfISOWeek(month)\n : startOfWeek(month);\n const lastDateOfLastWeek = props.broadcastCalendar\n ? endOfBroadcastWeek(month)\n : props.ISOWeek\n ? endOfISOWeek(endOfMonth(month))\n : endOfWeek(endOfMonth(month));\n /** The dates to display in the month. */\n const monthDates = dates.filter((date) => {\n return date >= firstDateOfFirstWeek && date <= lastDateOfLastWeek;\n });\n const nrOfDaysWithFixedWeeks = props.broadcastCalendar ? 35 : 42;\n if (props.fixedWeeks && monthDates.length < nrOfDaysWithFixedWeeks) {\n const extraDates = dates.filter((date) => {\n const daysToAdd = nrOfDaysWithFixedWeeks - monthDates.length;\n return (date > lastDateOfLastWeek &&\n date <= addDays(lastDateOfLastWeek, daysToAdd));\n });\n monthDates.push(...extraDates);\n }\n const weeks = monthDates.reduce((weeks, date) => {\n const weekNumber = props.ISOWeek ? getISOWeek(date) : getWeek(date);\n const week = weeks.find((week) => week.weekNumber === weekNumber);\n const day = new CalendarDay(date, month, dateLib);\n if (!week) {\n weeks.push(new CalendarWeek(weekNumber, [day]));\n }\n else {\n week.days.push(day);\n }\n return weeks;\n }, []);\n const dayPickerMonth = new CalendarMonth(month, weeks);\n months.push(dayPickerMonth);\n return months;\n }, []);\n if (!props.reverseMonths) {\n return dayPickerMonths;\n }\n else {\n return dayPickerMonths.reverse();\n }\n}\n","/**\n * Returns the start and end months for calendar navigation.\n *\n * @param props The DayPicker props, including navigation and layout options.\n * @param dateLib The date library to use for date manipulation.\n * @returns A tuple containing the start and end months for navigation.\n */\nexport function getNavMonths(props, dateLib) {\n let { startMonth, endMonth } = props;\n const { startOfYear, startOfDay, startOfMonth, endOfMonth, addYears, endOfYear, newDate, today, } = dateLib;\n // Handle deprecated code\n const { fromYear, toYear, fromMonth, toMonth } = props;\n if (!startMonth && fromMonth) {\n startMonth = fromMonth;\n }\n if (!startMonth && fromYear) {\n startMonth = dateLib.newDate(fromYear, 0, 1);\n }\n if (!endMonth && toMonth) {\n endMonth = toMonth;\n }\n if (!endMonth && toYear) {\n endMonth = newDate(toYear, 11, 31);\n }\n const hasYearDropdown = props.captionLayout === \"dropdown\" ||\n props.captionLayout === \"dropdown-years\";\n if (startMonth) {\n startMonth = startOfMonth(startMonth);\n }\n else if (fromYear) {\n startMonth = newDate(fromYear, 0, 1);\n }\n else if (!startMonth && hasYearDropdown) {\n startMonth = startOfYear(addYears(props.today ?? today(), -100));\n }\n if (endMonth) {\n endMonth = endOfMonth(endMonth);\n }\n else if (toYear) {\n endMonth = newDate(toYear, 11, 31);\n }\n else if (!endMonth && hasYearDropdown) {\n endMonth = endOfYear(props.today ?? today());\n }\n return [\n startMonth ? startOfDay(startMonth) : startMonth,\n endMonth ? startOfDay(endMonth) : endMonth,\n ];\n}\n","/**\n * Returns the next month the user can navigate to, based on the given options.\n *\n * The next month is not always the next calendar month:\n *\n * - If it is after the `calendarEndMonth`, it returns `undefined`.\n * - If paged navigation is enabled, it skips forward by the number of displayed\n * months.\n *\n * @param firstDisplayedMonth The first month currently displayed in the\n * calendar.\n * @param calendarEndMonth The latest month the user can navigate to.\n * @param options Navigation options, including `numberOfMonths` and\n * `pagedNavigation`.\n * @param dateLib The date library to use for date manipulation.\n * @returns The next month, or `undefined` if navigation is not possible.\n */\nexport function getNextMonth(firstDisplayedMonth, calendarEndMonth, options, dateLib) {\n if (options.disableNavigation) {\n return undefined;\n }\n const { pagedNavigation, numberOfMonths = 1 } = options;\n const { startOfMonth, addMonths, differenceInCalendarMonths } = dateLib;\n const offset = pagedNavigation ? numberOfMonths : 1;\n const month = startOfMonth(firstDisplayedMonth);\n if (!calendarEndMonth) {\n return addMonths(month, offset);\n }\n const monthsDiff = differenceInCalendarMonths(calendarEndMonth, firstDisplayedMonth);\n if (monthsDiff < numberOfMonths) {\n return undefined;\n }\n return addMonths(month, offset);\n}\n","/**\n * Returns the previous month the user can navigate to, based on the given\n * options.\n *\n * The previous month is not always the previous calendar month:\n *\n * - If it is before the `calendarStartMonth`, it returns `undefined`.\n * - If paged navigation is enabled, it skips back by the number of displayed\n * months.\n *\n * @param firstDisplayedMonth The first month currently displayed in the\n * calendar.\n * @param calendarStartMonth The earliest month the user can navigate to.\n * @param options Navigation options, including `numberOfMonths` and\n * `pagedNavigation`.\n * @param dateLib The date library to use for date manipulation.\n * @returns The previous month, or `undefined` if navigation is not possible.\n */\nexport function getPreviousMonth(firstDisplayedMonth, calendarStartMonth, options, dateLib) {\n if (options.disableNavigation) {\n return undefined;\n }\n const { pagedNavigation, numberOfMonths } = options;\n const { startOfMonth, addMonths, differenceInCalendarMonths } = dateLib;\n const offset = pagedNavigation ? (numberOfMonths ?? 1) : 1;\n const month = startOfMonth(firstDisplayedMonth);\n if (!calendarStartMonth) {\n return addMonths(month, -offset);\n }\n const monthsDiff = differenceInCalendarMonths(month, calendarStartMonth);\n if (monthsDiff <= 0) {\n return undefined;\n }\n return addMonths(month, -offset);\n}\n","/**\n * Returns an array of calendar weeks from an array of calendar months.\n *\n * @param months The array of calendar months.\n * @returns An array of calendar weeks.\n */\nexport function getWeeks(months) {\n const initialWeeks = [];\n return months.reduce((weeks, month) => {\n return weeks.concat(month.weeks.slice());\n }, initialWeeks.slice());\n}\n","import { useState } from \"react\";\n/**\n * A custom hook for managing both controlled and uncontrolled component states.\n *\n * This hook allows a component to support both controlled and uncontrolled\n * states by determining whether the `controlledValue` is provided. If it is\n * undefined, the hook falls back to using the internal state.\n *\n * @example\n * // Uncontrolled usage\n * const [value, setValue] = useControlledValue(0, undefined);\n *\n * // Controlled usage\n * const [value, setValue] = useControlledValue(0, props.value);\n *\n * @template T - The type of the value.\n * @param defaultValue The initial value for the uncontrolled state.\n * @param controlledValue The value for the controlled state. If undefined, the\n * component will use the uncontrolled state.\n * @returns A tuple where the first element is the current value (either\n * controlled or uncontrolled) and the second element is a setter function to\n * update the value.\n */\nexport function useControlledValue(defaultValue, controlledValue) {\n const [uncontrolledValue, setValue] = useState(defaultValue);\n const value = controlledValue === undefined ? uncontrolledValue : controlledValue;\n return [value, setValue];\n}\n","import { useEffect } from \"react\";\nimport { getDates } from \"./helpers/getDates.js\";\nimport { getDays } from \"./helpers/getDays.js\";\nimport { getDisplayMonths } from \"./helpers/getDisplayMonths.js\";\nimport { getInitialMonth } from \"./helpers/getInitialMonth.js\";\nimport { getMonths } from \"./helpers/getMonths.js\";\nimport { getNavMonths } from \"./helpers/getNavMonth.js\";\nimport { getNextMonth } from \"./helpers/getNextMonth.js\";\nimport { getPreviousMonth } from \"./helpers/getPreviousMonth.js\";\nimport { getWeeks } from \"./helpers/getWeeks.js\";\nimport { useControlledValue } from \"./helpers/useControlledValue.js\";\n/**\n * Provides the calendar object to work with the calendar in custom components.\n *\n * @private\n * @param props - The DayPicker props related to calendar configuration.\n * @param dateLib - The date utility library instance.\n * @returns The calendar object containing displayed days, weeks, months, and\n * navigation methods.\n */\nexport function useCalendar(props, dateLib) {\n const [navStart, navEnd] = getNavMonths(props, dateLib);\n const { startOfMonth, endOfMonth } = dateLib;\n const initialMonth = getInitialMonth(props, navStart, navEnd, dateLib);\n const [firstMonth, setFirstMonth] = useControlledValue(initialMonth, \n // initialMonth is always computed from props.month if provided\n props.month ? initialMonth : undefined);\n // biome-ignore lint/correctness/useExhaustiveDependencies: change the initial month when the time zone changes.\n useEffect(() => {\n const newInitialMonth = getInitialMonth(props, navStart, navEnd, dateLib);\n setFirstMonth(newInitialMonth);\n }, [props.timeZone]);\n /** The months displayed in the calendar. */\n const displayMonths = getDisplayMonths(firstMonth, navEnd, props, dateLib);\n /** The dates displayed in the calendar. */\n const dates = getDates(displayMonths, props.endMonth ? endOfMonth(props.endMonth) : undefined, props, dateLib);\n /** The Months displayed in the calendar. */\n const months = getMonths(displayMonths, dates, props, dateLib);\n /** The Weeks displayed in the calendar. */\n const weeks = getWeeks(months);\n /** The Days displayed in the calendar. */\n const days = getDays(months);\n const previousMonth = getPreviousMonth(firstMonth, navStart, props, dateLib);\n const nextMonth = getNextMonth(firstMonth, navEnd, props, dateLib);\n const { disableNavigation, onMonthChange } = props;\n const isDayInCalendar = (day) => weeks.some((week) => week.days.some((d) => d.isEqualTo(day)));\n const goToMonth = (date) => {\n if (disableNavigation) {\n return;\n }\n let newMonth = startOfMonth(date);\n // if month is before start, use the first month instead\n if (navStart && newMonth < startOfMonth(navStart)) {\n newMonth = startOfMonth(navStart);\n }\n // if month is after endMonth, use the last month instead\n if (navEnd && newMonth > startOfMonth(navEnd)) {\n newMonth = startOfMonth(navEnd);\n }\n setFirstMonth(newMonth);\n onMonthChange?.(newMonth);\n };\n const goToDay = (day) => {\n // is this check necessary?\n if (isDayInCalendar(day)) {\n return;\n }\n goToMonth(day.date);\n };\n const calendar = {\n months,\n weeks,\n days,\n navStart,\n navEnd,\n previousMonth,\n nextMonth,\n goToMonth,\n goToDay,\n };\n return calendar;\n}\n","import { DayFlag } from \"../UI.js\";\nvar FocusTargetPriority;\n(function (FocusTargetPriority) {\n FocusTargetPriority[FocusTargetPriority[\"Today\"] = 0] = \"Today\";\n FocusTargetPriority[FocusTargetPriority[\"Selected\"] = 1] = \"Selected\";\n FocusTargetPriority[FocusTargetPriority[\"LastFocused\"] = 2] = \"LastFocused\";\n FocusTargetPriority[FocusTargetPriority[\"FocusedModifier\"] = 3] = \"FocusedModifier\";\n})(FocusTargetPriority || (FocusTargetPriority = {}));\n/**\n * Determines if a day is focusable based on its modifiers.\n *\n * A day is considered focusable if it is not disabled, hidden, or outside the\n * displayed month.\n *\n * @param modifiers The modifiers applied to the day.\n * @returns `true` if the day is focusable, otherwise `false`.\n */\nfunction isFocusableDay(modifiers) {\n return (!modifiers[DayFlag.disabled] &&\n !modifiers[DayFlag.hidden] &&\n !modifiers[DayFlag.outside]);\n}\n/**\n * Calculates the focus target day based on priority.\n *\n * This function determines the day that should receive focus in the calendar,\n * prioritizing days with specific modifiers (e.g., \"focused\", \"today\") or\n * selection states.\n *\n * @param days The array of `CalendarDay` objects to evaluate.\n * @param getModifiers A function to retrieve the modifiers for a given day.\n * @param isSelected A function to determine if a day is selected.\n * @param lastFocused The last focused day, if any.\n * @returns The `CalendarDay` that should receive focus, or `undefined` if no\n * focusable day is found.\n */\nexport function calculateFocusTarget(days, getModifiers, isSelected, lastFocused) {\n let focusTarget;\n let foundFocusTargetPriority = -1;\n for (const day of days) {\n const modifiers = getModifiers(day);\n if (isFocusableDay(modifiers)) {\n if (modifiers[DayFlag.focused] &&\n foundFocusTargetPriority < FocusTargetPriority.FocusedModifier) {\n focusTarget = day;\n foundFocusTargetPriority = FocusTargetPriority.FocusedModifier;\n }\n else if (lastFocused?.isEqualTo(day) &&\n foundFocusTargetPriority < FocusTargetPriority.LastFocused) {\n focusTarget = day;\n foundFocusTargetPriority = FocusTargetPriority.LastFocused;\n }\n else if (isSelected(day.date) &&\n foundFocusTargetPriority < FocusTargetPriority.Selected) {\n focusTarget = day;\n foundFocusTargetPriority = FocusTargetPriority.Selected;\n }\n else if (modifiers[DayFlag.today] &&\n foundFocusTargetPriority < FocusTargetPriority.Today) {\n focusTarget = day;\n foundFocusTargetPriority = FocusTargetPriority.Today;\n }\n }\n }\n if (!focusTarget) {\n // Return the first day that is focusable\n focusTarget = days.find((day) => isFocusableDay(getModifiers(day)));\n }\n return focusTarget;\n}\n","/**\n * Calculates the next date that should be focused in the calendar.\n *\n * This function determines the next focusable date based on the movement\n * direction, constraints, and calendar configuration.\n *\n * @param moveBy The unit of movement (e.g., \"day\", \"week\").\n * @param moveDir The direction of movement (\"before\" or \"after\").\n * @param refDate The reference date from which to calculate the next focusable\n * date.\n * @param navStart The earliest date the user can navigate to.\n * @param navEnd The latest date the user can navigate to.\n * @param props The DayPicker props, including calendar configuration options.\n * @param dateLib The date library to use for date manipulation.\n * @returns The next focusable date.\n */\nexport function getFocusableDate(moveBy, moveDir, refDate, navStart, navEnd, props, dateLib) {\n const { ISOWeek, broadcastCalendar } = props;\n const { addDays, addMonths, addWeeks, addYears, endOfBroadcastWeek, endOfISOWeek, endOfWeek, max, min, startOfBroadcastWeek, startOfISOWeek, startOfWeek, } = dateLib;\n const moveFns = {\n day: addDays,\n week: addWeeks,\n month: addMonths,\n year: addYears,\n startOfWeek: (date) => broadcastCalendar\n ? startOfBroadcastWeek(date, dateLib)\n : ISOWeek\n ? startOfISOWeek(date)\n : startOfWeek(date),\n endOfWeek: (date) => broadcastCalendar\n ? endOfBroadcastWeek(date)\n : ISOWeek\n ? endOfISOWeek(date)\n : endOfWeek(date),\n };\n let focusableDate = moveFns[moveBy](refDate, moveDir === \"after\" ? 1 : -1);\n if (moveDir === \"before\" && navStart) {\n focusableDate = max([navStart, focusableDate]);\n }\n else if (moveDir === \"after\" && navEnd) {\n focusableDate = min([navEnd, focusableDate]);\n }\n return focusableDate;\n}\n","import { CalendarDay } from \"../classes/index.js\";\nimport { dateMatchModifiers } from \"../utils/dateMatchModifiers.js\";\nimport { getFocusableDate } from \"./getFocusableDate.js\";\n/**\n * Determines the next focusable day in the calendar.\n *\n * This function recursively calculates the next focusable day based on the\n * movement direction and modifiers applied to the days.\n *\n * @param moveBy The unit of movement (e.g., \"day\", \"week\").\n * @param moveDir The direction of movement (\"before\" or \"after\").\n * @param refDay The currently focused day.\n * @param calendarStartMonth The earliest month the user can navigate to.\n * @param calendarEndMonth The latest month the user can navigate to.\n * @param props The DayPicker props, including modifiers and configuration\n * options.\n * @param dateLib The date library to use for date manipulation.\n * @param attempt The current recursion attempt (used to limit recursion depth).\n * @returns The next focusable day, or `undefined` if no focusable day is found.\n */\nexport function getNextFocus(moveBy, moveDir, refDay, calendarStartMonth, calendarEndMonth, props, dateLib, attempt = 0) {\n if (attempt > 365) {\n // Limit the recursion to 365 attempts\n return undefined;\n }\n const focusableDate = getFocusableDate(moveBy, moveDir, refDay.date, calendarStartMonth, calendarEndMonth, props, dateLib);\n const isDisabled = Boolean(props.disabled &&\n dateMatchModifiers(focusableDate, props.disabled, dateLib));\n const isHidden = Boolean(props.hidden && dateMatchModifiers(focusableDate, props.hidden, dateLib));\n const targetMonth = focusableDate;\n const focusDay = new CalendarDay(focusableDate, targetMonth, dateLib);\n if (!isDisabled && !isHidden) {\n return focusDay;\n }\n // Recursively attempt to find the next focusable date\n return getNextFocus(moveBy, moveDir, focusDay, calendarStartMonth, calendarEndMonth, props, dateLib, attempt + 1);\n}\n","import { useState } from \"react\";\nimport { calculateFocusTarget } from \"./helpers/calculateFocusTarget.js\";\nimport { getNextFocus } from \"./helpers/getNextFocus.js\";\n/**\n * Manages focus behavior for the DayPicker component, including setting,\n * moving, and blurring focus on calendar days.\n *\n * @template T - The type of DayPicker props.\n * @param props - The DayPicker props.\n * @param calendar - The calendar object containing the displayed days and\n * months.\n * @param getModifiers - A function to retrieve modifiers for a given day.\n * @param isSelected - A function to check if a date is selected.\n * @param dateLib - The date utility library instance.\n * @returns An object containing focus-related methods and the currently focused\n * day.\n */\nexport function useFocus(props, calendar, getModifiers, isSelected, dateLib) {\n const { autoFocus } = props;\n const [lastFocused, setLastFocused] = useState();\n const focusTarget = calculateFocusTarget(calendar.days, getModifiers, isSelected || (() => false), lastFocused);\n const [focusedDay, setFocused] = useState(autoFocus ? focusTarget : undefined);\n const blur = () => {\n setLastFocused(focusedDay);\n setFocused(undefined);\n };\n const moveFocus = (moveBy, moveDir) => {\n if (!focusedDay)\n return;\n const nextFocus = getNextFocus(moveBy, moveDir, focusedDay, calendar.navStart, calendar.navEnd, props, dateLib);\n if (!nextFocus)\n return;\n calendar.goToDay(nextFocus);\n setFocused(nextFocus);\n };\n const isFocusTarget = (day) => {\n return Boolean(focusTarget?.isEqualTo(day));\n };\n const useFocus = {\n isFocusTarget,\n setFocused,\n focused: focusedDay,\n blur,\n moveFocus,\n };\n return useFocus;\n}\n","import { useControlledValue } from \"../helpers/useControlledValue.js\";\n/**\n * Hook to manage multiple-date selection in the DayPicker component.\n *\n * @template T - The type of DayPicker props.\n * @param props - The DayPicker props.\n * @param dateLib - The date utility library instance.\n * @returns An object containing the selected dates, a function to select dates,\n * and a function to check if a date is selected.\n */\nexport function useMulti(props, dateLib) {\n const { selected: initiallySelected, required, onSelect, } = props;\n const [internallySelected, setSelected] = useControlledValue(initiallySelected, onSelect ? initiallySelected : undefined);\n const selected = !onSelect ? internallySelected : initiallySelected;\n const { isSameDay } = dateLib;\n const isSelected = (date) => {\n return selected?.some((d) => isSameDay(d, date)) ?? false;\n };\n const { min, max } = props;\n const select = (triggerDate, modifiers, e) => {\n let newDates = [...(selected ?? [])];\n if (isSelected(triggerDate)) {\n if (selected?.length === min) {\n // Min value reached, do nothing\n return;\n }\n if (required && selected?.length === 1) {\n // Required value already selected do nothing\n return;\n }\n newDates = selected?.filter((d) => !isSameDay(d, triggerDate));\n }\n else {\n if (selected?.length === max) {\n // Max value reached, reset the selection to date\n newDates = [triggerDate];\n }\n else {\n // Add the date to the selection\n newDates = [...newDates, triggerDate];\n }\n }\n if (!onSelect) {\n setSelected(newDates);\n }\n onSelect?.(newDates, triggerDate, modifiers, e);\n return newDates;\n };\n return {\n selected,\n select,\n isSelected,\n };\n}\n","import { defaultDateLib } from \"../classes/DateLib.js\";\n/**\n * Adds a date to an existing range, considering constraints like minimum and\n * maximum range size.\n *\n * @param date - The date to add to the range.\n * @param initialRange - The initial range to which the date will be added.\n * @param min - The minimum number of days in the range.\n * @param max - The maximum number of days in the range.\n * @param required - Whether the range must always include at least one date.\n * @param dateLib - The date utility library instance.\n * @returns The updated date range, or `undefined` if the range is cleared.\n * @group Utilities\n */\nexport function addToRange(date, initialRange, min = 0, max = 0, required = false, dateLib = defaultDateLib) {\n const { from, to } = initialRange || {};\n const { isSameDay, isAfter, isBefore } = dateLib;\n let range;\n if (!from && !to) {\n // the range is empty, add the date\n range = { from: date, to: min > 0 ? undefined : date };\n }\n else if (from && !to) {\n // adding date to an incomplete range\n if (isSameDay(from, date)) {\n // adding a date equal to the start of the range\n if (min === 0) {\n range = { from, to: date };\n }\n else if (required) {\n range = { from, to: undefined };\n }\n else {\n range = undefined;\n }\n }\n else if (isBefore(date, from)) {\n // adding a date before the start of the range\n range = { from: date, to: from };\n }\n else {\n // adding a date after the start of the range\n range = { from, to: date };\n }\n }\n else if (from && to) {\n // adding date to a complete range\n if (isSameDay(from, date) && isSameDay(to, date)) {\n // adding a date that is equal to both start and end of the range\n if (required) {\n range = { from, to };\n }\n else {\n range = undefined;\n }\n }\n else if (isSameDay(from, date)) {\n // adding a date equal to the the start of the range\n range = { from, to: min > 0 ? undefined : date };\n }\n else if (isSameDay(to, date)) {\n // adding a dare equal to the end of the range\n range = { from: date, to: min > 0 ? undefined : date };\n }\n else if (isBefore(date, from)) {\n // adding a date before the start of the range\n range = { from: date, to: to };\n }\n else if (isAfter(date, from)) {\n // adding a date after the start of the range\n range = { from, to: date };\n }\n else if (isAfter(date, to)) {\n // adding a date after the end of the range\n range = { from, to: date };\n }\n else {\n throw new Error(\"Invalid range\");\n }\n }\n // check for min / max\n if (range?.from && range?.to) {\n const diff = dateLib.differenceInCalendarDays(range.to, range.from);\n if (max > 0 && diff > max) {\n range = { from: date, to: undefined };\n }\n else if (min > 1 && diff < min) {\n range = { from: date, to: undefined };\n }\n }\n return range;\n}\n","import { defaultDateLib } from \"../classes/DateLib.js\";\n/**\n * Checks if a date range contains one or more specified days of the week.\n *\n * @since 9.2.2\n * @param range - The date range to check.\n * @param dayOfWeek - The day(s) of the week to check for (`0-6`, where `0` is\n * Sunday).\n * @param dateLib - The date utility library instance.\n * @returns `true` if the range contains the specified day(s) of the week,\n * otherwise `false`.\n * @group Utilities\n */\nexport function rangeContainsDayOfWeek(range, dayOfWeek, dateLib = defaultDateLib) {\n const dayOfWeekArr = !Array.isArray(dayOfWeek) ? [dayOfWeek] : dayOfWeek;\n let date = range.from;\n const totalDays = dateLib.differenceInCalendarDays(range.to, range.from);\n // iterate at maximum one week or the total days if the range is shorter than one week\n const totalDaysLimit = Math.min(totalDays, 6);\n for (let i = 0; i <= totalDaysLimit; i++) {\n if (dayOfWeekArr.includes(date.getDay())) {\n return true;\n }\n date = dateLib.addDays(date, 1);\n }\n return false;\n}\n","import { defaultDateLib } from \"../classes/index.js\";\nimport { rangeIncludesDate } from \"./rangeIncludesDate.js\";\n/**\n * Determines if two date ranges overlap.\n *\n * @since 9.2.2\n * @param rangeLeft - The first date range.\n * @param rangeRight - The second date range.\n * @param dateLib - The date utility library instance.\n * @returns `true` if the ranges overlap, otherwise `false`.\n * @group Utilities\n */\nexport function rangeOverlaps(rangeLeft, rangeRight, dateLib = defaultDateLib) {\n return (rangeIncludesDate(rangeLeft, rangeRight.from, false, dateLib) ||\n rangeIncludesDate(rangeLeft, rangeRight.to, false, dateLib) ||\n rangeIncludesDate(rangeRight, rangeLeft.from, false, dateLib) ||\n rangeIncludesDate(rangeRight, rangeLeft.to, false, dateLib));\n}\n","import { defaultDateLib } from \"../classes/DateLib.js\";\nimport { dateMatchModifiers } from \"./dateMatchModifiers.js\";\nimport { rangeContainsDayOfWeek } from \"./rangeContainsDayOfWeek.js\";\nimport { rangeIncludesDate } from \"./rangeIncludesDate.js\";\nimport { rangeOverlaps } from \"./rangeOverlaps.js\";\nimport { isDateAfterType, isDateBeforeType, isDateInterval, isDateRange, isDatesArray, isDayOfWeekType, } from \"./typeguards.js\";\n/**\n * Checks if a date range contains dates that match the given modifiers.\n *\n * @since 9.2.2\n * @param range - The date range to check.\n * @param modifiers - The modifiers to match against.\n * @param dateLib - The date utility library instance.\n * @returns `true` if the range contains matching dates, otherwise `false`.\n * @group Utilities\n */\nexport function rangeContainsModifiers(range, modifiers, dateLib = defaultDateLib) {\n const matchers = Array.isArray(modifiers) ? modifiers : [modifiers];\n // Defer function matchers evaluation as they are the least performant.\n const nonFunctionMatchers = matchers.filter((matcher) => typeof matcher !== \"function\");\n const nonFunctionMatchersResult = nonFunctionMatchers.some((matcher) => {\n if (typeof matcher === \"boolean\")\n return matcher;\n if (dateLib.isDate(matcher)) {\n return rangeIncludesDate(range, matcher, false, dateLib);\n }\n if (isDatesArray(matcher, dateLib)) {\n return matcher.some((date) => rangeIncludesDate(range, date, false, dateLib));\n }\n if (isDateRange(matcher)) {\n if (matcher.from && matcher.to) {\n return rangeOverlaps(range, { from: matcher.from, to: matcher.to }, dateLib);\n }\n return false;\n }\n if (isDayOfWeekType(matcher)) {\n return rangeContainsDayOfWeek(range, matcher.dayOfWeek, dateLib);\n }\n if (isDateInterval(matcher)) {\n const isClosedInterval = dateLib.isAfter(matcher.before, matcher.after);\n if (isClosedInterval) {\n return rangeOverlaps(range, {\n from: dateLib.addDays(matcher.after, 1),\n to: dateLib.addDays(matcher.before, -1),\n }, dateLib);\n }\n return (dateMatchModifiers(range.from, matcher, dateLib) ||\n dateMatchModifiers(range.to, matcher, dateLib));\n }\n if (isDateAfterType(matcher) || isDateBeforeType(matcher)) {\n return (dateMatchModifiers(range.from, matcher, dateLib) ||\n dateMatchModifiers(range.to, matcher, dateLib));\n }\n return false;\n });\n if (nonFunctionMatchersResult) {\n return true;\n }\n const functionMatchers = matchers.filter((matcher) => typeof matcher === \"function\");\n if (functionMatchers.length) {\n let date = range.from;\n const totalDays = dateLib.differenceInCalendarDays(range.to, range.from);\n for (let i = 0; i <= totalDays; i++) {\n if (functionMatchers.some((matcher) => matcher(date))) {\n return true;\n }\n date = dateLib.addDays(date, 1);\n }\n }\n return false;\n}\n","import { useControlledValue } from \"../helpers/useControlledValue.js\";\nimport { addToRange, rangeContainsModifiers } from \"../utils/index.js\";\nimport { rangeIncludesDate } from \"../utils/rangeIncludesDate.js\";\n/**\n * Hook to manage range selection in the DayPicker component.\n *\n * @template T - The type of DayPicker props.\n * @param props - The DayPicker props.\n * @param dateLib - The date utility library instance.\n * @returns An object containing the selected range, a function to select a\n * range, and a function to check if a date is within the range.\n */\nexport function useRange(props, dateLib) {\n const { disabled, excludeDisabled, selected: initiallySelected, required, onSelect, } = props;\n const [internallySelected, setSelected] = useControlledValue(initiallySelected, onSelect ? initiallySelected : undefined);\n const selected = !onSelect ? internallySelected : initiallySelected;\n const isSelected = (date) => selected && rangeIncludesDate(selected, date, false, dateLib);\n const select = (triggerDate, modifiers, e) => {\n const { min, max } = props;\n const newRange = triggerDate\n ? addToRange(triggerDate, selected, min, max, required, dateLib)\n : undefined;\n if (excludeDisabled && disabled && newRange?.from && newRange.to) {\n if (rangeContainsModifiers({ from: newRange.from, to: newRange.to }, disabled, dateLib)) {\n // if a disabled days is found, the range is reset\n newRange.from = triggerDate;\n newRange.to = undefined;\n }\n }\n if (!onSelect) {\n setSelected(newRange);\n }\n onSelect?.(newRange, triggerDate, modifiers, e);\n return newRange;\n };\n return {\n selected,\n select,\n isSelected,\n };\n}\n","import { useControlledValue } from \"../helpers/useControlledValue.js\";\n/**\n * Hook to manage single-date selection in the DayPicker component.\n *\n * @template T - The type of DayPicker props.\n * @param props - The DayPicker props.\n * @param dateLib - The date utility library instance.\n * @returns An object containing the selected date, a function to select a date,\n * and a function to check if a date is selected.\n */\nexport function useSingle(props, dateLib) {\n const { selected: initiallySelected, required, onSelect, } = props;\n const [internallySelected, setSelected] = useControlledValue(initiallySelected, onSelect ? initiallySelected : undefined);\n const selected = !onSelect ? internallySelected : initiallySelected;\n const { isSameDay } = dateLib;\n const isSelected = (compareDate) => {\n return selected ? isSameDay(selected, compareDate) : false;\n };\n const select = (triggerDate, modifiers, e) => {\n let newDate = triggerDate;\n if (!required && selected && selected && isSameDay(triggerDate, selected)) {\n // If the date is the same, clear the selection.\n newDate = undefined;\n }\n if (!onSelect) {\n setSelected(newDate);\n }\n if (required) {\n onSelect?.(newDate, triggerDate, modifiers, e);\n }\n else {\n onSelect?.(newDate, triggerDate, modifiers, e);\n }\n return newDate;\n };\n return {\n selected,\n select,\n isSelected,\n };\n}\n","import { useMulti } from \"./selection/useMulti.js\";\nimport { useRange } from \"./selection/useRange.js\";\nimport { useSingle } from \"./selection/useSingle.js\";\n/**\n * Determines the appropriate selection hook to use based on the selection mode\n * and returns the corresponding selection object.\n *\n * @template T - The type of DayPicker props.\n * @param props - The DayPicker props.\n * @param dateLib - The date utility library instance.\n * @returns The selection object for the specified mode, or `undefined` if no\n * mode is set.\n */\nexport function useSelection(props, dateLib) {\n const single = useSingle(props, dateLib);\n const multi = useMulti(props, dateLib);\n const range = useRange(props, dateLib);\n switch (props.mode) {\n case \"single\":\n return single;\n case \"multiple\":\n return multi;\n case \"range\":\n return range;\n default:\n return undefined;\n }\n}\n","import { TZDate } from \"@date-fns/tz\";\nimport React, { useCallback, useMemo, useRef } from \"react\";\nimport { DateLib, defaultLocale } from \"./classes/DateLib.js\";\nimport { createGetModifiers } from \"./helpers/createGetModifiers.js\";\nimport { getClassNamesForModifiers } from \"./helpers/getClassNamesForModifiers.js\";\nimport { getComponents } from \"./helpers/getComponents.js\";\nimport { getDataAttributes } from \"./helpers/getDataAttributes.js\";\nimport { getDefaultClassNames } from \"./helpers/getDefaultClassNames.js\";\nimport { getFormatters } from \"./helpers/getFormatters.js\";\nimport { getMonthOptions } from \"./helpers/getMonthOptions.js\";\nimport { getStyleForModifiers } from \"./helpers/getStyleForModifiers.js\";\nimport { getWeekdays } from \"./helpers/getWeekdays.js\";\nimport { getYearOptions } from \"./helpers/getYearOptions.js\";\nimport * as defaultLabels from \"./labels/index.js\";\nimport { DayFlag, SelectionState, UI } from \"./UI.js\";\nimport { useAnimation } from \"./useAnimation.js\";\nimport { useCalendar } from \"./useCalendar.js\";\nimport { dayPickerContext } from \"./useDayPicker.js\";\nimport { useFocus } from \"./useFocus.js\";\nimport { useSelection } from \"./useSelection.js\";\nimport { rangeIncludesDate } from \"./utils/rangeIncludesDate.js\";\nimport { isDateRange } from \"./utils/typeguards.js\";\n/**\n * Renders the DayPicker calendar component.\n *\n * @param initialProps - The props for the DayPicker component.\n * @returns The rendered DayPicker component.\n * @group DayPicker\n * @see https://daypicker.dev\n */\nexport function DayPicker(initialProps) {\n let props = initialProps;\n if (props.timeZone) {\n props = {\n ...initialProps,\n };\n if (props.today) {\n props.today = new TZDate(props.today, props.timeZone);\n }\n if (props.month) {\n props.month = new TZDate(props.month, props.timeZone);\n }\n if (props.defaultMonth) {\n props.defaultMonth = new TZDate(props.defaultMonth, props.timeZone);\n }\n if (props.startMonth) {\n props.startMonth = new TZDate(props.startMonth, props.timeZone);\n }\n if (props.endMonth) {\n props.endMonth = new TZDate(props.endMonth, props.timeZone);\n }\n if (props.mode === \"single\" && props.selected) {\n props.selected = new TZDate(props.selected, props.timeZone);\n }\n else if (props.mode === \"multiple\" && props.selected) {\n props.selected = props.selected?.map((date) => new TZDate(date, props.timeZone));\n }\n else if (props.mode === \"range\" && props.selected) {\n props.selected = {\n from: props.selected.from\n ? new TZDate(props.selected.from, props.timeZone)\n : undefined,\n to: props.selected.to\n ? new TZDate(props.selected.to, props.timeZone)\n : undefined,\n };\n }\n }\n const { components, formatters, labels, dateLib, locale, classNames } = useMemo(() => {\n const locale = { ...defaultLocale, ...props.locale };\n const dateLib = new DateLib({\n locale,\n weekStartsOn: props.broadcastCalendar ? 1 : props.weekStartsOn,\n firstWeekContainsDate: props.firstWeekContainsDate,\n useAdditionalWeekYearTokens: props.useAdditionalWeekYearTokens,\n useAdditionalDayOfYearTokens: props.useAdditionalDayOfYearTokens,\n timeZone: props.timeZone,\n numerals: props.numerals,\n }, props.dateLib);\n return {\n dateLib,\n components: getComponents(props.components),\n formatters: getFormatters(props.formatters),\n labels: { ...defaultLabels, ...props.labels },\n locale,\n classNames: { ...getDefaultClassNames(), ...props.classNames },\n };\n }, [\n props.locale,\n props.broadcastCalendar,\n props.weekStartsOn,\n props.firstWeekContainsDate,\n props.useAdditionalWeekYearTokens,\n props.useAdditionalDayOfYearTokens,\n props.timeZone,\n props.numerals,\n props.dateLib,\n props.components,\n props.formatters,\n props.labels,\n props.classNames,\n ]);\n const { captionLayout, mode, navLayout, numberOfMonths = 1, onDayBlur, onDayClick, onDayFocus, onDayKeyDown, onDayMouseEnter, onDayMouseLeave, onNextClick, onPrevClick, showWeekNumber, styles, } = props;\n const { formatCaption, formatDay, formatMonthDropdown, formatWeekNumber, formatWeekNumberHeader, formatWeekdayName, formatYearDropdown, } = formatters;\n const calendar = useCalendar(props, dateLib);\n const { days, months, navStart, navEnd, previousMonth, nextMonth, goToMonth, } = calendar;\n const getModifiers = createGetModifiers(days, props, navStart, navEnd, dateLib);\n const { isSelected, select, selected: selectedValue, } = useSelection(props, dateLib) ?? {};\n const { blur, focused, isFocusTarget, moveFocus, setFocused } = useFocus(props, calendar, getModifiers, isSelected ?? (() => false), dateLib);\n const { labelDayButton, labelGridcell, labelGrid, labelMonthDropdown, labelNav, labelPrevious, labelNext, labelWeekday, labelWeekNumber, labelWeekNumberHeader, labelYearDropdown, } = labels;\n const weekdays = useMemo(() => getWeekdays(dateLib, props.ISOWeek), [dateLib, props.ISOWeek]);\n const isInteractive = mode !== undefined || onDayClick !== undefined;\n const handlePreviousClick = useCallback(() => {\n if (!previousMonth)\n return;\n goToMonth(previousMonth);\n onPrevClick?.(previousMonth);\n }, [previousMonth, goToMonth, onPrevClick]);\n const handleNextClick = useCallback(() => {\n if (!nextMonth)\n return;\n goToMonth(nextMonth);\n onNextClick?.(nextMonth);\n }, [goToMonth, nextMonth, onNextClick]);\n const handleDayClick = useCallback((day, m) => (e) => {\n e.preventDefault();\n e.stopPropagation();\n setFocused(day);\n select?.(day.date, m, e);\n onDayClick?.(day.date, m, e);\n }, [select, onDayClick, setFocused]);\n const handleDayFocus = useCallback((day, m) => (e) => {\n setFocused(day);\n onDayFocus?.(day.date, m, e);\n }, [onDayFocus, setFocused]);\n const handleDayBlur = useCallback((day, m) => (e) => {\n blur();\n onDayBlur?.(day.date, m, e);\n }, [blur, onDayBlur]);\n const handleDayKeyDown = useCallback((day, modifiers) => (e) => {\n const keyMap = {\n ArrowLeft: [\n e.shiftKey ? \"month\" : \"day\",\n props.dir === \"rtl\" ? \"after\" : \"before\",\n ],\n ArrowRight: [\n e.shiftKey ? \"month\" : \"day\",\n props.dir === \"rtl\" ? \"before\" : \"after\",\n ],\n ArrowDown: [e.shiftKey ? \"year\" : \"week\", \"after\"],\n ArrowUp: [e.shiftKey ? \"year\" : \"week\", \"before\"],\n PageUp: [e.shiftKey ? \"year\" : \"month\", \"before\"],\n PageDown: [e.shiftKey ? \"year\" : \"month\", \"after\"],\n Home: [\"startOfWeek\", \"before\"],\n End: [\"endOfWeek\", \"after\"],\n };\n if (keyMap[e.key]) {\n e.preventDefault();\n e.stopPropagation();\n const [moveBy, moveDir] = keyMap[e.key];\n moveFocus(moveBy, moveDir);\n }\n onDayKeyDown?.(day.date, modifiers, e);\n }, [moveFocus, onDayKeyDown, props.dir]);\n const handleDayMouseEnter = useCallback((day, modifiers) => (e) => {\n onDayMouseEnter?.(day.date, modifiers, e);\n }, [onDayMouseEnter]);\n const handleDayMouseLeave = useCallback((day, modifiers) => (e) => {\n onDayMouseLeave?.(day.date, modifiers, e);\n }, [onDayMouseLeave]);\n const handleMonthChange = useCallback((date) => (e) => {\n const selectedMonth = Number(e.target.value);\n const month = dateLib.setMonth(dateLib.startOfMonth(date), selectedMonth);\n goToMonth(month);\n }, [dateLib, goToMonth]);\n const handleYearChange = useCallback((date) => (e) => {\n const selectedYear = Number(e.target.value);\n const month = dateLib.setYear(dateLib.startOfMonth(date), selectedYear);\n goToMonth(month);\n }, [dateLib, goToMonth]);\n const { className, style } = useMemo(() => ({\n className: [classNames[UI.Root], props.className]\n .filter(Boolean)\n .join(\" \"),\n style: { ...styles?.[UI.Root], ...props.style },\n }), [classNames, props.className, props.style, styles]);\n const dataAttributes = getDataAttributes(props);\n const rootElRef = useRef(null);\n useAnimation(rootElRef, Boolean(props.animate), {\n classNames,\n months,\n focused,\n dateLib,\n });\n const contextValue = {\n dayPickerProps: props,\n selected: selectedValue,\n select: select,\n isSelected,\n months,\n nextMonth,\n previousMonth,\n goToMonth,\n getModifiers,\n components,\n classNames,\n styles,\n labels,\n formatters,\n };\n return (React.createElement(dayPickerContext.Provider, { value: contextValue },\n React.createElement(components.Root, { rootRef: props.animate ? rootElRef : undefined, className: className, style: style, dir: props.dir, id: props.id, lang: props.lang, nonce: props.nonce, title: props.title, role: props.role, \"aria-label\": props[\"aria-label\"], ...dataAttributes },\n React.createElement(components.Months, { className: classNames[UI.Months], style: styles?.[UI.Months] },\n !props.hideNavigation && !navLayout && (React.createElement(components.Nav, { \"data-animated-nav\": props.animate ? \"true\" : undefined, className: classNames[UI.Nav], style: styles?.[UI.Nav], \"aria-label\": labelNav(), onPreviousClick: handlePreviousClick, onNextClick: handleNextClick, previousMonth: previousMonth, nextMonth: nextMonth })),\n months.map((calendarMonth, displayIndex) => {\n return (React.createElement(components.Month, { \"data-animated-month\": props.animate ? \"true\" : undefined, className: classNames[UI.Month], style: styles?.[UI.Month], \n // biome-ignore lint/suspicious/noArrayIndexKey: breaks animation\n key: displayIndex, displayIndex: displayIndex, calendarMonth: calendarMonth },\n navLayout === \"around\" &&\n !props.hideNavigation &&\n displayIndex === 0 && (React.createElement(components.PreviousMonthButton, { type: \"button\", className: classNames[UI.PreviousMonthButton], tabIndex: previousMonth ? undefined : -1, \"aria-disabled\": previousMonth ? undefined : true, \"aria-label\": labelPrevious(previousMonth), onClick: handlePreviousClick, \"data-animated-button\": props.animate ? \"true\" : undefined },\n React.createElement(components.Chevron, { disabled: previousMonth ? undefined : true, className: classNames[UI.Chevron], orientation: props.dir === \"rtl\" ? \"right\" : \"left\" }))),\n React.createElement(components.MonthCaption, { \"data-animated-caption\": props.animate ? \"true\" : undefined, className: classNames[UI.MonthCaption], style: styles?.[UI.MonthCaption], calendarMonth: calendarMonth, displayIndex: displayIndex }, captionLayout?.startsWith(\"dropdown\") ? (React.createElement(components.DropdownNav, { className: classNames[UI.Dropdowns], style: styles?.[UI.Dropdowns] },\n captionLayout === \"dropdown\" ||\n captionLayout === \"dropdown-months\" ? (React.createElement(components.MonthsDropdown, { className: classNames[UI.MonthsDropdown], \"aria-label\": labelMonthDropdown(), classNames: classNames, components: components, disabled: Boolean(props.disableNavigation), onChange: handleMonthChange(calendarMonth.date), options: getMonthOptions(calendarMonth.date, navStart, navEnd, formatters, dateLib), style: styles?.[UI.Dropdown], value: dateLib.getMonth(calendarMonth.date) })) : (React.createElement(\"span\", null, formatMonthDropdown(calendarMonth.date, dateLib))),\n captionLayout === \"dropdown\" ||\n captionLayout === \"dropdown-years\" ? (React.createElement(components.YearsDropdown, { className: classNames[UI.YearsDropdown], \"aria-label\": labelYearDropdown(dateLib.options), classNames: classNames, components: components, disabled: Boolean(props.disableNavigation), onChange: handleYearChange(calendarMonth.date), options: getYearOptions(navStart, navEnd, formatters, dateLib, Boolean(props.reverseYears)), style: styles?.[UI.Dropdown], value: dateLib.getYear(calendarMonth.date) })) : (React.createElement(\"span\", null, formatYearDropdown(calendarMonth.date, dateLib))),\n React.createElement(\"span\", { role: \"status\", \"aria-live\": \"polite\", style: {\n border: 0,\n clip: \"rect(0 0 0 0)\",\n height: \"1px\",\n margin: \"-1px\",\n overflow: \"hidden\",\n padding: 0,\n position: \"absolute\",\n width: \"1px\",\n whiteSpace: \"nowrap\",\n wordWrap: \"normal\",\n } }, formatCaption(calendarMonth.date, dateLib.options, dateLib)))) : (\n // biome-ignore lint/a11y/useSemanticElements: breaking change\n React.createElement(components.CaptionLabel, { className: classNames[UI.CaptionLabel], role: \"status\", \"aria-live\": \"polite\" }, formatCaption(calendarMonth.date, dateLib.options, dateLib)))),\n navLayout === \"around\" &&\n !props.hideNavigation &&\n displayIndex === numberOfMonths - 1 && (React.createElement(components.NextMonthButton, { type: \"button\", className: classNames[UI.NextMonthButton], tabIndex: nextMonth ? undefined : -1, \"aria-disabled\": nextMonth ? undefined : true, \"aria-label\": labelNext(nextMonth), onClick: handleNextClick, \"data-animated-button\": props.animate ? \"true\" : undefined },\n React.createElement(components.Chevron, { disabled: nextMonth ? undefined : true, className: classNames[UI.Chevron], orientation: props.dir === \"rtl\" ? \"left\" : \"right\" }))),\n displayIndex === numberOfMonths - 1 &&\n navLayout === \"after\" &&\n !props.hideNavigation && (React.createElement(components.Nav, { \"data-animated-nav\": props.animate ? \"true\" : undefined, className: classNames[UI.Nav], style: styles?.[UI.Nav], \"aria-label\": labelNav(), onPreviousClick: handlePreviousClick, onNextClick: handleNextClick, previousMonth: previousMonth, nextMonth: nextMonth })),\n React.createElement(components.MonthGrid, { role: \"grid\", \"aria-multiselectable\": mode === \"multiple\" || mode === \"range\", \"aria-label\": labelGrid(calendarMonth.date, dateLib.options, dateLib) ||\n undefined, className: classNames[UI.MonthGrid], style: styles?.[UI.MonthGrid] },\n !props.hideWeekdays && (React.createElement(components.Weekdays, { \"data-animated-weekdays\": props.animate ? \"true\" : undefined, className: classNames[UI.Weekdays], style: styles?.[UI.Weekdays] },\n showWeekNumber && (React.createElement(components.WeekNumberHeader, { \"aria-label\": labelWeekNumberHeader(dateLib.options), className: classNames[UI.WeekNumberHeader], style: styles?.[UI.WeekNumberHeader], scope: \"col\" }, formatWeekNumberHeader())),\n weekdays.map((weekday) => (React.createElement(components.Weekday, { \"aria-label\": labelWeekday(weekday, dateLib.options, dateLib), className: classNames[UI.Weekday], key: String(weekday), style: styles?.[UI.Weekday], scope: \"col\" }, formatWeekdayName(weekday, dateLib.options, dateLib)))))),\n React.createElement(components.Weeks, { \"data-animated-weeks\": props.animate ? \"true\" : undefined, className: classNames[UI.Weeks], style: styles?.[UI.Weeks] }, calendarMonth.weeks.map((week) => {\n return (React.createElement(components.Week, { className: classNames[UI.Week], key: week.weekNumber, style: styles?.[UI.Week], week: week },\n showWeekNumber && (\n // biome-ignore lint/a11y/useSemanticElements: react component\n React.createElement(components.WeekNumber, { week: week, style: styles?.[UI.WeekNumber], \"aria-label\": labelWeekNumber(week.weekNumber, {\n locale,\n }), className: classNames[UI.WeekNumber], scope: \"row\", role: \"rowheader\" }, formatWeekNumber(week.weekNumber, dateLib))),\n week.days.map((day) => {\n const { date } = day;\n const modifiers = getModifiers(day);\n modifiers[DayFlag.focused] =\n !modifiers.hidden &&\n Boolean(focused?.isEqualTo(day));\n modifiers[SelectionState.selected] =\n isSelected?.(date) || modifiers.selected;\n if (isDateRange(selectedValue)) {\n // add range modifiers\n const { from, to } = selectedValue;\n modifiers[SelectionState.range_start] = Boolean(from && to && dateLib.isSameDay(date, from));\n modifiers[SelectionState.range_end] = Boolean(from && to && dateLib.isSameDay(date, to));\n modifiers[SelectionState.range_middle] =\n rangeIncludesDate(selectedValue, date, true, dateLib);\n }\n const style = getStyleForModifiers(modifiers, styles, props.modifiersStyles);\n const className = getClassNamesForModifiers(modifiers, classNames, props.modifiersClassNames);\n const ariaLabel = !isInteractive && !modifiers.hidden\n ? labelGridcell(date, modifiers, dateLib.options, dateLib)\n : undefined;\n return (\n // biome-ignore lint/a11y/useSemanticElements: react component\n React.createElement(components.Day, { key: `${dateLib.format(date, \"yyyy-MM-dd\")}_${dateLib.format(day.displayMonth, \"yyyy-MM\")}`, day: day, modifiers: modifiers, className: className.join(\" \"), style: style, role: \"gridcell\", \"aria-selected\": modifiers.selected || undefined, \"aria-label\": ariaLabel, \"data-day\": dateLib.format(date, \"yyyy-MM-dd\"), \"data-month\": day.outside\n ? dateLib.format(date, \"yyyy-MM\")\n : undefined, \"data-selected\": modifiers.selected || undefined, \"data-disabled\": modifiers.disabled || undefined, \"data-hidden\": modifiers.hidden || undefined, \"data-outside\": day.outside || undefined, \"data-focused\": modifiers.focused || undefined, \"data-today\": modifiers.today || undefined }, !modifiers.hidden && isInteractive ? (React.createElement(components.DayButton, { className: classNames[UI.DayButton], style: styles?.[UI.DayButton], type: \"button\", day: day, modifiers: modifiers, disabled: modifiers.disabled || undefined, tabIndex: isFocusTarget(day) ? 0 : -1, \"aria-label\": labelDayButton(date, modifiers, dateLib.options, dateLib), onClick: handleDayClick(day, modifiers), onBlur: handleDayBlur(day, modifiers), onFocus: handleDayFocus(day, modifiers), onKeyDown: handleDayKeyDown(day, modifiers), onMouseEnter: handleDayMouseEnter(day, modifiers), onMouseLeave: handleDayMouseLeave(day, modifiers) }, formatDay(date, dateLib.options, dateLib))) : (!modifiers.hidden &&\n formatDay(day.date, dateLib.options, dateLib))));\n })));\n })))));\n })),\n props.footer && (\n // biome-ignore lint/a11y/useSemanticElements: react component\n React.createElement(components.Footer, { className: classNames[UI.Footer], style: styles?.[UI.Footer], role: \"status\", \"aria-live\": \"polite\" }, props.footer)))));\n}\n","import \"react-day-picker/style.css\";\n\nimport { memo } from \"react\";\nimport { DayPicker, type PropsSingle, PropsBase } from \"react-day-picker\";\n\nimport { getSemanticToken } from \"../../../styles\";\nimport styled from \"@emotion/styled\";\n\ntype DatePickerProps = PropsSingle & PropsBase;\n\nexport const DatePicker = memo(({ ...rest }: Omit<DatePickerProps, \"mode\">) => (\n <StyledDayPicker mode=\"single\" {...rest} />\n));\n\nconst StyledDayPicker = styled(DayPicker)`\n font-family: ${getSemanticToken(\"font-family-default\")};\n`;\n","import styled from \"@emotion/styled\";\nimport { getSemanticToken } from \"../../../styles\";\nimport { ReactNode } from \"react\";\n\ninterface MenuWrapperProps {\n rightMenu: ReactNode;\n leftMenu: ReactNode;\n className?: string;\n}\n\nexport const MenuWrapper = ({\n rightMenu,\n leftMenu,\n className,\n}: MenuWrapperProps) => (\n <StyledMenuWrapper className={className}>\n {leftMenu}\n <IconsWrapper>{rightMenu}</IconsWrapper>\n </StyledMenuWrapper>\n);\n\nconst StyledMenuWrapper = styled.div`\n align-items: center;\n background-color: ${getSemanticToken(\"color-black\")};\n display: flex;\n gap: 12px;\n height: ${getSemanticToken(\"spacing-32\")};\n justify-content: space-between;\n padding: 0px ${getSemanticToken(\"spacing-20\")};\n width: 100%;\n`;\n\nconst IconsWrapper = styled.div`\n display: flex;\n align-items: center;\n`;\n","import styled from \"@emotion/styled\";\n\nimport { memo } from \"react\";\nimport { Text } from \"../../atoms\";\nimport { getSemanticToken } from \"../../../styles\";\n\ninterface EmptyListMessageProps {\n title: string;\n message: string;\n}\n\nexport const EmptyListMessage = memo(\n ({ title, message }: EmptyListMessageProps) => (\n <StyledEmptyListMessage>\n <Text variant=\"body\" bold>\n {title}\n </Text>\n <Text variant=\"body\" color=\"grey\">\n {message}\n </Text>\n </StyledEmptyListMessage>\n )\n);\n\nconst StyledEmptyListMessage = styled.div`\n display: flex;\n padding: ${getSemanticToken(\"spacing-8\")} ${getSemanticToken(\"spacing-10\")}\n ${getSemanticToken(\"spacing-8\")} ${getSemanticToken(\"spacing-20\")};\n flex-direction: column;\n align-items: flex-start;\n gap: ${getSemanticToken(\"spacing-8\")};\n align-self: stretch;\n`;\n","import styled from \"@emotion/styled\";\nimport { memo, type ComponentType } from \"react\";\nimport {\n FlexResizablePanel,\n ResizablePanel,\n ResizablePanelGroup,\n ResizablePanelHandle,\n ResizablePanelProps,\n} from \"../../atoms\";\n\ninterface ListWithDetailsLayoutProps {\n listMinSize?: ResizablePanelProps[\"minSize\"];\n listMaxSize?: ResizablePanelProps[\"maxSize\"];\n listCollapsedSize?: ResizablePanelProps[\"collapsedSize\"];\n disabled?: boolean;\n List: ComponentType<{ disabled?: boolean }>;\n Details: ComponentType;\n ListPanelComponent?: ComponentType<ResizablePanelProps>;\n}\n\nexport const ListWithDetailsLayout = memo(\n ({\n listMaxSize,\n listMinSize,\n listCollapsedSize,\n disabled,\n List,\n Details,\n ListPanelComponent = ResizablePanel,\n }: ListWithDetailsLayoutProps) => (\n <Wrapper>\n <ResizablePanelGroup direction=\"horizontal\">\n <ListPanelComponent\n minSize={listMinSize}\n maxSize={listMaxSize}\n collapsedSize={listCollapsedSize}\n >\n <Content>\n <List disabled={disabled} />\n </Content>\n </ListPanelComponent>\n <ResizablePanelHandle />\n <FlexResizablePanel>\n <DetailsContent>\n <Details />\n </DetailsContent>\n </FlexResizablePanel>\n </ResizablePanelGroup>\n </Wrapper>\n )\n);\n\nconst Wrapper = styled.div`\n width: 100%;\n height: 100%;\n display: flex;\n align-items: flex-start;\n justify-content: flex-start;\n`;\n\nconst Content = styled.div`\n height: 100%;\n width: 100%;\n display: flex;\n align-items: flex-start;\n justify-content: flex-start;\n flex-direction: column;\n`;\n\nconst DetailsContent = styled(Content)`\n overflow: auto;\n`;\n","import { useCallback, useEffect, useState, type RefObject } from \"react\";\n\ntype DragData<T> = T & { id: string };\n\ninterface UseDragDropOptions<T> {\n ref: RefObject<HTMLElement>;\n data: DragData<T>;\n canDrag?: boolean;\n transformDragData?: (data: DragData<T>) => Record<string, any>;\n onDrop?: (data: DragData<T>, event: DragEvent) => void;\n onDragStart?: (data: DragData<T>, event: DragEvent) => void;\n onDragEnd?: (event: DragEvent) => void;\n onDragOver?: (event: DragEvent) => void;\n}\n\nexport const useDragDrop = <T,>({\n ref,\n data,\n canDrag = true,\n transformDragData = (data) => data,\n onDrop,\n onDragStart,\n onDragEnd,\n onDragOver,\n}: UseDragDropOptions<T>) => {\n const [dragging, setDragging] = useState(false);\n const [over, setOver] = useState(false);\n\n const preventDefault = (event: DragEvent) => {\n event.preventDefault();\n event.stopPropagation();\n };\n\n const handleDragOverOrEnter = useCallback(\n (event: DragEvent) => {\n preventDefault(event);\n setOver(true);\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = \"move\";\n }\n onDragOver?.(event);\n },\n [onDragOver]\n );\n\n const handleDragLeave = useCallback((event: DragEvent) => {\n preventDefault(event);\n setOver(false);\n }, []);\n\n const handleDragEnd = useCallback(\n (event: DragEvent) => {\n preventDefault(event);\n setDragging(false);\n setOver(false);\n onDragEnd?.(event);\n },\n [onDragEnd]\n );\n\n const handleDrop = useCallback(\n (event: DragEvent) => {\n preventDefault(event);\n setDragging(false);\n setOver(false);\n\n let droppedData: DragData<T> | null = null;\n try {\n droppedData = JSON.parse(\n event.dataTransfer?.getData(\"application/json\") ?? \"null\"\n );\n } catch (error) {\n console.error(\"Invalid drag data:\", error);\n }\n\n if (droppedData) onDrop?.(droppedData, event);\n },\n [onDrop]\n );\n\n const handleDragStart = useCallback(\n (event: DragEvent) => {\n if (!canDrag) return;\n event.stopPropagation();\n\n setDragging(true);\n setOver(false);\n if (event.dataTransfer) {\n event.dataTransfer.effectAllowed = \"move\";\n }\n\n const transformedData = transformDragData(data);\n event.dataTransfer?.setData(\n \"application/json\",\n JSON.stringify(transformedData)\n );\n\n onDragStart?.(data, event);\n },\n [canDrag, data, onDragStart, transformDragData]\n );\n\n useEffect(() => {\n const element = ref.current;\n const eventHandlers: Record<string, EventListener> = {\n dragover: (event) => handleDragOverOrEnter(event as DragEvent),\n dragenter: (event) => handleDragOverOrEnter(event as DragEvent),\n dragleave: (event) => handleDragLeave(event as DragEvent),\n // drop: (event) => handleDrop(event as DragEvent),\n dragstart: (event) => handleDragStart(event as DragEvent),\n dragend: (event) => handleDragEnd(event as DragEvent),\n };\n if (element) {\n Object.entries(eventHandlers).forEach(([event, handler]) =>\n element.addEventListener(event, handler)\n );\n }\n\n return () => {\n Object.entries(eventHandlers).forEach(([event, handler]) => {\n if (element) {\n element.removeEventListener(event, handler);\n }\n });\n };\n }, [\n ref,\n handleDragOverOrEnter,\n handleDragLeave,\n handleDrop,\n handleDragStart,\n handleDragEnd,\n ]);\n\n return { dragging, over };\n};\n"],"names":["escapeRegExp","toEscape","escapableChars","isRegExp","toTest","isString","flatten","toFlatten","newArray","item","replaceString","source","_toMatch","callback","toMatch","result","i","length","stringComponentInsert","_source","x","returnAsKey","key","asKey","getGlobalToken","getSemanticToken","ACTIONABLE_BLURB_TOKENS","st","APP_SHELL_TOKENS","ARTIFACT_DRAWER_TOKENS","CHECKBOX_TOKENS","COLLAPSIBLE_ARTIFACT_TOKENS","COLLAPSIBLE_LIST_TOKENS","DRAWER_TOKENS","FORM_TOKENS","HORIZONTAL_RULE_TOKENS","ICON_BUTTON_TOKENS","ICON_TOKENS","IMAGE_CONFIG_PAGE_HEADER_TOKENS","INPUT_TOKENS","LINK_TOKENS","MODAL_TOKENS","NAMED_SECTION_TOKENS","SEGMENTED_TOKENS","SELECT_TOKENS","STUDIO_BUTTON_TOKENS","STUDIO_LABEL_TOKENS","STUDIO_TEXT_TOKENS","TAB_TOKENS","TAG_TOKENS","TEXTAREA_TOKENS","TOGGLE_TOKENS","VERSION_LIST_TOKENS","COMBO_BOX_TOKENS","RADIO_BUTTON_TOKENS","SELECT_VIEW_LIST_TOKENS","SHELL_MENU_TOKENS","NAMED_LIST_ITEM_TOKENS","ERROR_LIST_ITEM_TOKENS","INGREDIENT_CARD_TOKENS","BRANDED_HEADER_TOKENS","ARTIFACT_STORE_SETTINGS","TABLE_TOKENS","RESIZABLE_PANELS_TOKENS","FILE_PICKER_TOKENS","SHELL_ICON_BUTTON_TOKENS","MULTI_SELECT_TOKENS","BADGE_TOKENS","COMPONENT_TOKENS","COLOR_DEFINITION","TYPOGRAPHY_DEFINITIONS","SPACING_DEFINITION","GLOBAL_TOKENS","SEMANTIC_COLOR_DEFINITION","SEMANTIC_TYPOGRAPHY_DEFINITIONS","SEMANTIC_SPACING_DEFINITION","SEMANTIC_TOKENS","transformLocalTokenObject","tokens","prefix","namespace","createLocalTokenSystem","options","cssRootSelector","getLocalComponentTokenHelpers","namespaces","localComponentTokenCss","css","createLocalComponentHelper","createLocalComponentTokenCss","getComponentTokenHelpers","transformTokenObject","getTokenName","subKey","semanticStudioTokenCss","globalStudioTokenCss","componentStudioTokenCss","baseComponentStyles","componentStyles","viewableListItemStyles","buttonStyles","listItemStyles","listStyles","baseGenericStyles","baseSemanticStyles","rootStyles","getStyles","temporaryThemeID","studioColors","studioLightColors","studioDarkColors","studioGenericColor","studioComponentTokens","studioSize","studioSizing","studioTypography","scrollbarStyle","studioTheme","forwardRefWithGeneric","render","forwardRef","ct","TEXT_COLORS","_Text","bold","children","color","ellipsis","lineClamp","textAlign","underline","variant","elementProps","ref","jsx","ClassNames","cx","StyledText","Text","TEXT_ALIGNMENTS","styled","alignment","Link","onClick","size","isDisabled","spanProps","BaseLinkStyles","iconColors","iconSizes","BaseUIComponentsContext","createContext","BaseUIComponentsContextProvider","publicPath","value","useMemo","useBaseUIComponentsContext","context","useContext","_Icon","iconId","rest","basePath","StyledIcon","Icon","memo","ActionableBlurb","text","actions","icon","title","iconColor","iconSize","className","toRender","comp","action","actionText","match","jsxs","StyledActionableBlurb","IconWrapper","BlurbWrapper","useCollapsibleContextValue","defaultOpen","controlledOpen","setControlledOpen","uncontrolledOpen","setUncontrolledOpen","useState","open","setOpen","CollapsibleContext","useCollapsibleContext","Collapsible","CollapsibleTrigger","useCallback","isValidElement","cloneElement","CollapsibleContent","hasOwn","classNames","classes","arg","appendClass","parseValue","newClass","module","IconButton","badgeOffset","badgeBorderColor","type","isActive","badgeColor","hasBadge","buttonProps","StyledIconButton","IconButtonBadge","LockedButton","CollapsibleArtifactDescription","description","ArtifactDescriptionText","CollapsibleArtifact","onExternalClick","id","name","isSelected","VersionList","_onExternalClick","CollapsibleArtifactWrapper","AlwaysPresentContent","TriggerCaretButton","ArtifactInfo","ArtifactNameRow","ExternalButton","ListContainer","ListContent","noop","machineReducer","machine","state","event","useStateMachineReducer","initial","useReducer","getAnimationName","styles","useAnimatePresence","present","onPresenceChange","node","setNode","stylesRef","useRef","prevPresentRef","prevAnimationNameRef","onPresenceChangeRef","useLayoutEffect","send","useEffect","currentAnimationName","wasPresent","prevAnimationName","handleAnimationEnd","isCurrentAnimation","flushSync","handleAnimationStart","isPresent","AnimatePresence","presence","AlternatingStatus","offlineContent","onlineContent","AlternatingWrapper","AlternatingCube","AlternatingFace","$front","$back","buttonCT","iconCT","_Button","disabled","StyledButton","ButtonIconWrapper","Button","CheckBox","props","CheckBoxWrapper","CheckBoxInput","toggleSelection","selection","active","ranges","range","deselectCurrent","require$$0","clipboardToIE11Formatting","defaultMessage","format","message","copyKey","copy","debug","reselectPrevious","mark","success","e","successful","err","copyToClipboard","HOVER_TIMEOUT","COPY_TIMEOUT","CopyableText","copyable","copyText","onMouseMove","onMouseOut","onMouseOver","style","copyTimeoutRef","overTimeoutRef","iconRef","containerRef","copied","setCopied","over","setOver","clickHandler","isText","reset","mouseMoveHandler","rect","localX","localY","mouseOutHandler","mouseOverHandler","useDecoratedFloatingUITrigger","forwardedRef","setFloatingReference","getReferenceProps","childrenRef","useMergeRefs","useDialogContextValue","onOpenChange","dismissOptions","data","useFloating","click","useClick","dismiss","useDismiss","interactions","useInteractions","ModalOverlayStyles","DialogContext","useDialogContext","Dialog","dialog","DialogTrigger","propRef","DialogContent","disableScrollLock","modal","portalRoot","portalId","trapFocus","transitionDuration","OverlayStyles","disableFocusManagement","initialFocus","floatingContext","isMounted","status","useTransitionStatus","FloatingPortal","FloatingFocusManager","FloatingOverlay","DRAWER_ANIMATION_DURATION","useContainerWidth","width","setWidth","observer","entry","HandleContainer","FlexHandle","inverse","maxSize","minSize","onChange","xRef","bind","useDrag","down","mx","first","useDrawerContextValue","mode","sizeValue","setSizeValue","DrawerContext","useDrawerContext","DrawerContentFloatContainer","DrawerOverlayBaseStyles","StartOverlayStyle","EndOverlayStyle","VerticalDialogDrawerBaseStyles","DrawerBaseContainer","DrawerPane","LeftDialogDrawerBase","setSize","containerWidth","mounted","percent","Fragment","RightDialogDrawerBase","SlideFromLeft","keyframes","ReturnFromLeft","LeftDialogDrawer","SlideFromRight","ReturnFromRight","RightDialogDrawer","HorizontalDialogDrawerBaseStyles","SlideFromTop","ReturnFromTop","TopDialogDrawer","SlideFromBottom","ReturnToBottom","BottomDialogDrawer","VerticalInlineDrawerBaseStyles","LeftInlineDrawerBase","RightInlineDrawerBase","LeftInlineDrawer","RightInlineDrawer","HorizontalInlineDrawerBaseStyles","TopInlineDrawer","BottomInlineDrawer","DISMISS_OPTIONS","Drawer","DrawerTrigger","DrawerContent","DrawerHeader","closeIcon","showCloseButton","textVariant","textBold","inheritTextColor","onCloseClick","DrawerHeaderWrapper","getComponentToken","HorizontalRule","Input","prefixIconId","prefixIconColor","prefixSize","isSmall","autoCapitalize","autoComplete","autoCorrect","suffixIconColor","suffixIcon","suffixIconId","suffixSize","onSuffixIconClick","onEnter","onKeyDown","isPassword","isPasswordVisible","setIsPasswordVisible","typeClone","setTypeClone","onEyeClick","handleKeyDown","InputWrapper","StyledInput","InputIcon","RightIconWrapper","InputSearch","onSearch","placeholder","labelStyles","Label","LabelWithContent","suffix","labelWithActionStyles","LabelWithAction","labelWithContentLinkStyle","LabelWithContentLink","USERNAME_PATTERN","EMAIL_PATTERN","NUMBERS_ONLY_PATTERN","NO_SPACES_PATTERN","FIRST_CHAR_ALPHA","NO_LEADING_OR_TRAILING_SPACES_PATTERN","EmailRequirementKeys","getEmailValidation","PASSWORD_MIN_LENGTH","PasswordRequirementKeys","getPasswordValidation","includeTooSimilar","tooSimilarKey","allValues","currentPassword","isErrorWithMessage","error","getErrorMessage","createResizeObserver","isTicking","allEntries","callBacks","entries","obs","triggered","entryCallbacks","cb","target","callBack","cbs","cbIndex","_ResizeObserver","getResizeObserver","useResizeObserver","resizeObserver","callBackRef","isUnsubscribed","targetEl","resizeCallback","MiddleTruncateText","parentRef","middleTruncate","parent","child","originalText","childWidth","parentWidth","numChars","avgCharSize","charsToRemovePerSide","endLeft","startRight","leftText","rightText","onResize","_","setRef","SplitterContainer","orientation","Pane","StartPane","EndPane","Splitter","throttle","func","limit","lastFunc","lastRan","args","PaneSplitter","initialStartSizePct","startClampSizePx","minStartSizePct","minEndSizePct","startContent","endContent","splitterPosition","setSplitterPosition","containerRect","containerSize","initialPositionInPixels","splitterPct","startPaneSize","endPaneSize","handleResize","newSplitterPosition","throttledHandleResize","handleMouseDown","handleMouseMove","handleMouseUp","rawStartSize","assert","expectedCondition","getResizeHandleElement","scope","element","getPanelGroupElement","rootElement","_a","isMouseEvent","isPointerEvent","getResizeEventCoordinates","getResizeEventCursorPosition","direction","isHorizontal","y","calculateDragOffset","dragHandleId","initialDragState","panelGroupElement","handleElement","groupId","initialCursorPosition","cursorPosition","groupElement","calculateDeltaPercentage","getResizePanelElement","elements","handleIndex","indexToResize","handleOwner","getResizePanels","getSizeFromProp","parentSize","prop","percentSize","setElementValues","collapsed","resizePanel","panel","newSize","isShrinking","currentSize","parentElement","collapsedSize","collapseDelta","ResizablePanelGroupContext","ResizablePanelGroupContextProvider","useId","dragState","setDragState","committedValuesRef","startDragging","panelToResize","stopDragging","togglePanelCollapse","panelId","isCollapsed","recalculatePanelSizes","registerResizeHandle","delta","initialSize","useResizablePanelGroupContext","ResizablePanelGroup","StyledResizablePanelGroup","ResizablePanel","defaultSize","_maxSize","_minSize","_defaultSize","StyledResizablePanel","FlexResizablePanel","currentCursorStyle","styleElement","getCursorStyle","resetGlobalCursorStyle","setGlobalCursorStyle","intersects","rectOne","rectTwo","strict","compare","a","b","ancestors","get_ancestors","common_ancestor","z_indexes","get_z_index","find_stacking_context","furthest_ancestors","is_flex_item","display","get_parent","creates_stacking_context","nodes","parentNode","isPointerDown","getInputType","intersectingHandles","registeredResizeHandlers","isCoarsePointer","ownerDocumentCounts","hitAreaMargins","setResizeHandlerState","ownerDocument","count","updateListeners","index","updateCursor","recalculateIntersectingHandles","targetElement","dragHandleElement","dragHandleRect","bottom","left","right","top","margin","currentElement","didIntersect","handlePointerDown","updateResizeHandlerStates","handlePointerMove","handlePointerUp","body","intersectsHorizontal","intersectsVertical","ResizablePanelHandle","registerResizeHandleInContext","resizeHandleId","setState","resizeHandler","setResizeHandler","elementRef","StyledResizablePanelHandle","ScreenOverlay","StyledFloatingOverlay","SELECT_MIDDLEWARE","flip","SAME_SIZE_SELECT_MIDDLEWARE","rects","selectCt","SelectContext","useSelectContext","DEFAULT_BEFORE_OPEN","Select","onSelect","Reference","controlledSelectedIndex","onSelectedIndexChange","matchReferenceWidth","isFocusTrapDisabled","menuPlacement","onBeforeOpen","showOpenState","isOpen","setIsOpen","activeIndex","setActiveIndex","uncontrolledSelectedIndex","setUncontrolledSelectedIndex","selectedIndex","setSelectedIndex","_onOpenChange","refs","floatingStyles","autoUpdate","elementsRef","labelsRef","handleSelect","listNav","useListNavigation","role","useRole","getFloatingProps","getItemProps","selectContext","StyledReference","SelectState","StyledListBox","FloatingList","optionCt","textCt","Option","label","optionKey","textColor","disableSelectionStyle","disableEnterSelection","useListItem","handleOptionSelect","OptionContainer","SuffixIcon","ActionSelect","actionItems","items","ActionOption","getColor","level","OptionItemContainer","ShellIconButtonStyles","ShellIconButton","TabContext","useTabContext","Tab","controlledTab","controlledTabChange","defaultActiveTab","uncontrolledTab","setUncontrolledTab","onTabChange","activeTab","TabTrigger","TabTriggerButton","TabTriggerList","indicator","listRef","activeButton","StyledTabTriggerList","Indicator","TabPane","StyledTabPane","fontMap","textColorMap","TagContainer","Tag","content","TagWithRemove","tagName","onRemove","TextHighlight","search","highlightColor","highlightTextColor","matchColor","_search","highlightText","regex","part","term","highlightChildren","React","Badge","position","radius","hide","BadgeWrapper","StyledBadge","Textarea","StyledTextArea","containerCT","trackCT","thumbCT","ToggleIcon","ToggleContainer","ToggleTrack","ToggleThumb","Toggle","checked","labelVariant","showIcons","readOnly","checkedValue","setCheckedValue","TooltipContainer","FloatingContainer","BaseTooltip","arrowProps","openDelay","placement","_offset","arrowRef","offset","shift","arrow","hover","useHover","focus","useFocus","FloatingArrow","LightTooltipStyle","lightTooltipArrow","LightTooltip","contain","AlertContainer","AlertHeaderContainer","AlertDivider","AlertInformationContainer","getAlertIconColor","alertType","getAlertIconId","Alert","AlertTooltip","alert","DarkTooltipStyle","darkTooltipArrow","DarkTooltip","ErrorTooltip","SelectorContainer","Selector","SelectorTooltip","selector","Tooltip","Component","MultiSelectContext","MultiSelectContextProvider","useMultiSelectContext","MultiSelectItemWrapper","MultiSelectAllItem","SelectAllItemTemplate","selected","onSetSelected","checkBoxRef","isAllSelected","isPartiallySelected","_isAllSelected","option","selectedOption","onToggleSelectAll","SelectAllWrapper","MultiSelectItem","ListItemTemplate","onToggleSelect","SelectedMultiSelectItem","SelectedItemTemplate","StyledSelectedItem","MultiSelect","closeOnSelect","selectAllHidden","_open","toToggle","contextValue","StyledMultiSelect","createElement","ListBox","KOSLogo","ArtifactVersion","onListItemAction","isInherited","createdAt","_onSelect","StyledArtifactVersion","TextWrapper","NameRow","SelectedIcon","headerCT","toggledCT","Container","HeaderContainer","ToggledContainer","CollapsibleList","headerContent","toggledContent","onOpen","ComboBoxInput","isDeletable","inputText","setInputText","onSelectionChange","tooltipText","onSearchTextChange","handleRemove","SelectedTagWrapper","RemoveButtonWrapper","ComboBoxOptionLabel","ComboBoxInner","optionsToRender","handleSelectionChange","handleInputChange","OptionLabelComponent","createNode","createText","t","handleCreate","showCreate","StyledComboBox","StyledSelectOption","CreateNodeWrapper","CreateLink","ComboBox","deletable","onInputChange","requiresSelection","innerProps","selectedRef","isSelectedInInput","input","newSelection","StyledSelect","FakeInputReference","validateNotWhitespaceOnly","useWrapFormToConsiderWhitespacesAsEmpty","formMethods","register","wrappedRegister","originalValidationRules","wrappedOptions","control","Form","onSubmit","onRootErrorChange","defaultValues","formOptions","unwrappedForm","useForm","form","rootError","_onSubmit","FormProvider","Bullet","getBullet","isValid","RequirementsList","isBlank","requirements","metRequirements","bulletGetter","RequirementsListWrapper","StyledRequirementsList","requirement","isMet","StyledListItem","StyledListItemText","useFormContext","_useFormContext","PASSWORD_REQUIREMENTS","PASSWORD_REQUIREMENTS_TOO_SIMILAR","PasswordRequirementsList","hasLabel","getFieldState","formState","isDirty","errorObj","met","FormLabel","required","formItemId","StyledLabel","FormErrorMessage","handleError","errorMessage","StyledFormErrorMessage","FormFieldWrapper","FormInputWrapper","FormInputAreaWrapper","HiddenFormInput","FormToggle","controlOptions","fieldDisabled","useController","ToggleWrapper","_FormTextArea","autoFocus","wrap","fieldRef","field","formInputRef","FormTextArea","_FormSubmit","enabledIfClean","handleSubmit","setError","isSubmitting","dirtyFields","_disabled","FormSubmit","Dropdown","prefixIcon","getLabel","getIcon","valueRef","getReferenceDisplayProps","reference","Children","selectIndexBasedOnValue","_children","_value","inputLabel","setInputLabel","inputIcon","setInputIcon","_b","referenceProps","DropdownInput","FormSelect","actionId","_FormInput","FormInput","FormField","areaField","FormInputContainer","_FormCheckbox","formCheckRef","FormCheckbox","FormAccessToggle","StyledFormAccessToggle","FormAccessToggles","isAdmin","hideHide","hideLock","StyledFormAccessToggles","FormNameInput","nameBlackList","maxLength","validate","FormComboBox","useLabelAsValue","ComboBoxReference","FormFileInput","onDragOver","onDrop","foundFile","file","onRemoveFile","SelectedFileWrapper","RemoveFileButton","FileDropZone","HiddenInput","FileWrapper","FormMultiSelect","newSelected","useLoadDataProvider","dataProvider","onInit","loaded","setLoaded","init","SelectListContext","useSelectListContext","isContextAware","ListContext","ListContextProvider","dataProviderContextData","setDataProviderContextData","listener","_context","useListContext","KosLog","resolver","BaseObservableDataProvider","itemMap","contextData","__publicField","observable","makeObservable","computed","list","unique","inputFilter","tmp","kosAction","acc","existing","changed","isKosDataModel","whenReady","_resolver","reaction","resolve","dispose","kosAutoEffect","isContainer","keyResolver","k","ObservableDataProvider","GroupedObservableDataProvider","group","PropertyDataProvider","isComponentFactory","itemRenderer","provider","ItemTemplate","Template","List","kosComponent","firstChild","lastChild","emptyState","itemListRenderer","SelectList","isSingleSelect","autoSelectFirstItem","getFirstItem","listProps","internalSelected","setInternalSelected","itemId","prev","firstItemId","isGroupFactory","GroupTemplate","g","GroupComponent","GroupContext","GroupList","supportMultipleOpen","opened","setOpened","toggleGroup","useListGroupContext","NamedCollapsibleGroup","openedGroups","handleGroupToggle","GroupContainer","LabelContainer","InnerContainer","AnonymousGroup","CheckListItemContainer","CheckListItemContainerCompact","CheckListItemContainerWithDivider","CheckListItemContainerWithDividerCompact","CheckListItemCheck","CheckListItemCheckCompact","CheckListItemName","CheckListItemNameCompact","CheckListItemTemplate","showDivider","CheckBoxContainer","CheckBoxLabel","NamedListItemContainer","CheckContainer","NameContainer","DescriptionListItemTemplate","NamedListItemTemplate","suffixIcons","subText","subTextColor","Wrapper","MainTextWrapper","SuffixIconWrapper","SubTextWrapper","DescriptionText","TableNamedListItemContainer","TableNamedListItemTemplate","useOpenedGroups","defaultOpenedGroups","setOpenedGroups","openGroups","useGroupSelection","defaultGroupSelection","groupSelection","setGroupSelection","groupItems","useSelection","defaultSelected","setSelected","TreeDataProvider","config","curr","parentId","createBranch","root","_branches","rootBranch","branch","childRoot","rootBranches","TreeContext","TreeContextProvider","singleBranchOnly","controlledOpenedBranches","controlledSetOpenedBranches","_openedBranches","_setOpenedBranches","openedBranches","setOpenedBranches","openedBranchesRef","toggleBranch","branchId","getChildBranches","_branch","subBranch","subBranchId","childBranches","parentBranches","getParentBranches","parentBranch","newBranches","openedBranchId","useTreeListContext","isBranchFactory","BranchTemplate","renderBranch","isNotRoot","BranchComponent","TreeList","AnonymousBranch","StyledAnonymousBranch","NamedCollapsibleBranch","onBranchLabelClick","BranchContainer","VirtualList","autoScrollToBottom","itemCount","itemHeight","onBottom","overscanAmount","renderRow","scrollTop","setScrollTop","height","setHeight","totalHeight","visibleCount","startIdx","endIdx","handleScroll","updateHeight","isAtBottom","StyledVirtualList","ListOuter","ListInner","VirtualizedList","virtualProps","VirtualizedSelectList","ModalWrapper","ModalHeader","ModalContent","ModalFooter","BaseModalContent","ModalLayout","header","footer","footerWrapper","headerWrapper","contentWrapper","Header","Content","Footer","StatusModal","headerText","acceptButtonVariant","acceptButtonText","onAccept","iconConfig","handleAccept","ConfirmModal","onConfirm","onCancel","confirmText","cancelText","confirmButtonVariant","cancelButtonVariant","confirmDisabled","headerIcon","headerIconColor","cancelDisabled","handleConfirm","handleCancel","ConfirmModalFooter","ConfirmDeleteHeader","ConfirmDeleteContent","contentText","compareText","errorText","formError","validateText","StyledConfirmDeleteContent","ConfirmDeleteFooter","DEFAULT_VALUES","ConfirmDeleteModal","ConfirmDeleteForm","_FormModal","submitText","submitButtonVariant","ContentWrapper","onButtonSubmit","FormModal","Modal","Inner","ModalTrigger","NamedSectionHeaderWrapper","CollapsibleNamedSectionHeader","isSelectable","NamedSection","isCollapsible","NamedSectionContent","_onClick","NamedSectionContainer","NamedSectionHeader","htmlProps","StyledNamedSectionHeader","NameAndDesc","NameWrapper","RightSide","TextContainer","PageHeader","SelectViewListContext","useSelectViewListContext","RadioButton","StyledRadioButton","getByteString","bytes","StickyObserver","isTopOverflow","isBottomOverflow","normalizePathDisplay","path","stripTrailing","segments","SelectViewListItem","isSelectDisabled","viewing","radioRef","itemRef","isObservingRef","isViewing","onView","StyledSelectViewListItem","LabelText","SelectViewList","dp","StyledSelectViewList","ItemSelectionListContext","useItemSelectionListContext","ItemSelectionListHeader","onToggleShowSelected","StyledItemSelectionListHeader","ShowSelected","ItemSelectionListItemTemplate","showSelectedOnly","ItemSectionNamedSection","ItemSectionWrapper","ItemSelectionList","defaultShowSelected","emptyMessage","onSelectAll","setShowSelectedOnly","selectAllRef","handleSelectAll","StyledListWrapper","EmptyState","ItemSelectionListDataProvider","mapper","DropdownMenu","trigger","onSelection","SelectSeparator","ShellMenu","StyledShellMenu","MenuSection","ShellMenuLink","StyledShellMenuLink","HolderListItemTemplate","trouble","ingredientName","assigned","blocked","useKosTranslation","onDelete","StyledHolderListItemTemplate","Top","ActionsWrapper","Bottom","startColors","endColors","possibleColors","startColor","endColor","iconCt","StyledBrandedHeader","InfoColumn","BrandedBGCss","start","end","IconFlatBadge","OfflineOverlay","DescriptionStyles","Description","BrandedHeader","Action","isOffline","TableContext","TableContextProvider","isSortable","useTableContext","StyledTableTd","TableTd","cell","StyledTableTr","TableTr","row","TdComponent","Td","DEFAULT_ITEMS","_getRowId","Table","columns","getRowId","TrComponent","renderEmptyAsStandalone","tableProps","sorting","setSorting","table","useReactTable","getCoreRowModel","getSortedRowModel","Tr","isEmpty","StyledTable","Thead","headerGroup","flexRender","Tbody","getSortDirectionText","sortValue","TableHeader","toggleSorting","canSort","onSort","StyledTableHeader","createTableColumnHelper","helper","createColumnHelper","meta","columnDef","column","accessor","getDeps","fn","opts","deps","memoizedFunction","_c","_d","depTime","newDeps","dep","resultTime","depEndTime","resultEndTime","resultFpsPercentage","pad","str","num","notUndefined","msg","approxEqual","debounce","targetWindow","ms","timeoutId","getRect","offsetWidth","offsetHeight","defaultKeyExtractor","defaultRangeExtractor","arr","observeElementRect","instance","handler","run","box","addEventListenerOptions","supportsScrollend","observeElementOffset","fallback","createHandler","isScrolling","horizontal","isRtl","endHandler","registerScrollendEvent","measureElement","elementScroll","adjustments","behavior","toOffset","Virtualizer","_ro","get","opts2","sync","d","scrollElement","cached","measurements","furthestMeasurementsFound","furthestMeasurements","m","measurement","previousFurthestMeasurement","paddingStart","scrollMargin","getItemKey","enabled","itemSizeCache","min","furthestMeasurement","measuredSize","lane","outerSize","scrollOffset","lanes","calculateRange","startIndex","endIndex","rangeExtractor","overscan","attributeName","indexStr","prevNode","itemSize","indexes","virtualItems","len","findNearestBinarySearch","align","maxOffset","initialAlign","attempts","maxAttempts","tryScroll","currentAlign","offsetInfo","currentOffset","afterInfo","scheduleRetry","endByLane","val","low","high","getCurrentValue","middle","currentValue","lastIndex","getOffset","endPerLane","pos","startPerLane","useIsomorphicLayoutEffect","useVirtualizerBase","rerender","resolvedOptions","instance2","useVirtualizer","VirtualTable","tableContainerRef","TableWrapper","VirtualizedTableBody","trClassName","numColumns","rows","rowVirtualizer","virtualRow","VirtualizedRow","buttonCt","ScreenOverlayWithAction","buttonText","StyledScreenOverlay","ScreenOverlayInner","tzName","timeZone","date","offsetFormatCache","offsetCache","tzOffset","offsetStr","calcOffset","captures","offsetRe","cacheStr","values","hours","minutes","seconds","TZDateMini","adjustToSystemTZ","syncToInternal","tz","time","re","method","utcMethod","syncFromInternal","baseOffset","prevHour","systemOffset","prevHourSystemOffset","systemDSTChange","dstShift","offsetDiff","systemDate","systemSecondsOffset","secondsOffset","postBaseOffset","postOffset","postOffsetDiff","offsetChanged","postDiff","newBaseOffset","newOffset","offsetChange","TZDate","sign","day","month","year","locales","formatDistanceLocale","formatDistance","token","tokenValue","buildFormatLongFn","dateFormats","timeFormats","dateTimeFormats","formatLong","formatRelativeLocale","formatRelative","_date","_baseDate","_options","buildLocalizeFn","valuesArray","defaultWidth","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","number","rem100","localize","quarter","buildMatchFn","string","matchPattern","matchResult","matchedString","parsePatterns","findIndex","pattern","findKey","object","predicate","array","buildMatchPatternFn","parseResult","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","enUS","FIVE_WEEKS","FOUR_WEEKS","getBroadcastWeeksInMonth","dateLib","firstDayOfMonth","firstDayOfWeek","broadcastStartDate","lastDateOfLastWeek","startOfBroadcastWeek","firstOfMonth","dayOfWeek","endOfBroadcastWeek","startDate","numberOfWeeks","DateLib","overrides","monthIndex","amount","addDays","addMonths","addWeeks","addYears","dateLeft","dateRight","differenceInCalendarDays","differenceInCalendarMonths","interval","eachMonthOfInterval","endOfISOWeek","endOfMonth","endOfWeek","endOfYear","formatStr","formatted","getISOWeek","getMonth","getYear","getWeek","dateToCompare","isAfter","isBefore","isDate","isSameDay","isSameMonth","isSameYear","dates","max","setMonth","setYear","_dateLib","startOfDay","startOfISOWeek","startOfMonth","startOfWeek","startOfYear","numerals","formatter","digitMap","digit","defaultDateLib","CalendarDay","displayMonth","CalendarMonth","weeks","CalendarWeek","weekNumber","days","CaptionLabel","Chevron","Day","modifiers","tdProps","DayButton","UI","DayFlag","SelectionState","Animation","components","selectProps","cssClassSelect","DropdownNav","Month","calendarMonth","displayIndex","divProps","MonthCaption","MonthGrid","Months","dayPickerContext","useDayPicker","MonthsDropdown","Nav","onPreviousClick","onNextClick","previousMonth","nextMonth","navProps","labelPrevious","labelNext","handleNextClick","handlePreviousClick","NextMonthButton","PreviousMonthButton","Root","rootRef","Week","week","trProps","Weekday","Weekdays","WeekNumber","thProps","WeekNumberHeader","Weeks","YearsDropdown","rangeIncludesDate","excludeEnds","from","to","isDateInterval","matcher","isDateRange","isDateAfterType","isDateBeforeType","isDayOfWeekType","isDatesArray","dateMatchModifiers","matchers","matchersArr","diffBefore","diffAfter","isDayBefore","isDayAfter","createGetModifiers","navStart","navEnd","hidden","showOutsideDays","broadcastCalendar","today","computedNavStart","computedNavEnd","internalModifiersMap","customModifiersMap","isOutside","isBeforeNavStart","isAfterNavEnd","isHidden","isToday","modifierValue","dayFlags","customModifiers","getClassNamesForModifiers","modifiersClassNames","previousValue","getComponents","customComponents","getDataAttributes","dataAttributes","getDefaultClassNames","formatCaption","formatMonthCaption","formatDay","formatMonthDropdown","formatWeekdayName","weekday","formatWeekNumber","formatWeekNumberHeader","formatYearDropdown","formatYearCaption","getFormatters","customFormatters","defaultFormatters","getMonthOptions","formatters","getStyleForModifiers","dayModifiers","modifiersStyles","modifier","getWeekdays","ISOWeek","getYearOptions","reverse","firstNavYear","lastNavYear","years","labelDayButton","labelDay","labelGrid","labelCaption","labelGridcell","labelMonthDropdown","labelNav","_month","labelWeekday","labelWeekNumber","labelWeekNumberHeader","labelYearDropdown","asHtmlElement","queryMonthEls","queryMonthEl","queryCaptionEl","queryWeeksEl","queryNavEl","queryWeekdaysEl","useAnimation","rootElRef","months","focused","previousRootElSnapshotRef","previousMonthsRef","animatingRef","previousMonths","isAfterPreviousMonth","captionAnimationClass","weeksAnimationClass","previousRootElSnapshot","rootElSnapshot","currentMonthElSnapshot","previousMonthElSnapshot","captionEl","weeksEl","previousMonthEls","currentMonthEls","el","navEl","currentMonthEl","previousMonthEl","cleanUp","previousWeekdaysEl","previousCaptionEl","previousWeeksEl","getDates","displayMonths","maxDate","firstMonth","lastMonth","fixedWeeks","startWeekFirstDate","endWeekLastDate","nOfDays","nOfMonths","extraDates","daysToAdd","getDays","calendarMonths","initialDays","weekDays","getDisplayMonths","firstDisplayedMonth","calendarEndMonth","numberOfMonths","getInitialMonth","defaultMonth","initialMonth","getMonths","dayPickerMonths","firstDateOfFirstWeek","monthDates","nrOfDaysWithFixedWeeks","dayPickerMonth","getNavMonths","startMonth","endMonth","newDate","fromYear","toYear","fromMonth","toMonth","hasYearDropdown","getNextMonth","pagedNavigation","getPreviousMonth","calendarStartMonth","getWeeks","initialWeeks","useControlledValue","defaultValue","controlledValue","uncontrolledValue","setValue","useCalendar","setFirstMonth","newInitialMonth","disableNavigation","onMonthChange","isDayInCalendar","goToMonth","newMonth","FocusTargetPriority","isFocusableDay","calculateFocusTarget","getModifiers","lastFocused","focusTarget","foundFocusTargetPriority","getFocusableDate","moveBy","moveDir","refDate","focusableDate","getNextFocus","refDay","attempt","targetMonth","focusDay","calendar","setLastFocused","focusedDay","setFocused","nextFocus","useMulti","initiallySelected","internallySelected","triggerDate","newDates","addToRange","initialRange","diff","rangeContainsDayOfWeek","dayOfWeekArr","totalDays","totalDaysLimit","rangeOverlaps","rangeLeft","rangeRight","rangeContainsModifiers","functionMatchers","useRange","excludeDisabled","newRange","useSingle","compareDate","single","multi","DayPicker","initialProps","labels","locale","defaultLocale","defaultLabels","captionLayout","navLayout","onDayBlur","onDayClick","onDayFocus","onDayKeyDown","onDayMouseEnter","onDayMouseLeave","onPrevClick","showWeekNumber","select","selectedValue","blur","isFocusTarget","moveFocus","weekdays","isInteractive","handleDayClick","handleDayFocus","handleDayBlur","handleDayKeyDown","keyMap","handleDayMouseEnter","handleDayMouseLeave","handleMonthChange","selectedMonth","handleYearChange","selectedYear","ariaLabel","DatePicker","StyledDayPicker","MenuWrapper","rightMenu","leftMenu","StyledMenuWrapper","IconsWrapper","EmptyListMessage","StyledEmptyListMessage","ListWithDetailsLayout","listMaxSize","listMinSize","listCollapsedSize","Details","ListPanelComponent","DetailsContent","useDragDrop","canDrag","transformDragData","onDragStart","onDragEnd","dragging","setDragging","preventDefault","handleDragOverOrEnter","handleDragLeave","handleDragEnd","handleDrop","droppedData","handleDragStart","transformedData","eventHandlers"],"mappings":"03BAEMA,GAAgBC,GAAqB,CACzC,MAAMC,EAAiB,sBAGvB,OAFyB,OAAOA,EAAe,MAAM,EAE7B,KAAKD,CAAQ,EACjCA,EAAS,QAAQC,EAAgB,MAAM,EACvCD,CACN,EAEME,GAAYC,GAChBA,aAAkB,OAEdC,GAAYD,GAChB,OAAOA,GAAW,SAEdE,GACJC,GACG,CACH,IAAIC,EAAmC,CAAA,EAEvC,OAAAD,EAAU,QAASE,GAAS,CACtB,MAAM,QAAQA,CAAI,EACpBD,EAAWA,EAAS,OAAOC,CAAI,EAE3BA,GACFD,EAAS,KAAKC,CAAI,CAGxB,CAAC,EAEMD,CACT,EAEME,GAAgB,CACpBC,EACAC,EACAC,IACG,CACH,GAAIF,IAAW,IAAMC,IAAa,GAAI,OAAOD,EAE7C,IAAIG,EAAUF,EAETT,GAASW,CAAO,IACnBA,EAAU,IAAI,OAAO,IAAMd,GAAac,CAAO,EAAI,IAAK,IAAI,GAG9D,MAAMC,EAAsBJ,EAAO,MAAMG,CAAO,EAIhD,QAASE,EAAI,EAAGC,EAASF,EAAO,OAAQC,EAAIC,EAAQD,GAAK,EAAG,CAC1D,GAAID,EAAOC,CAAC,IAAM,QAAaD,EAAOC,EAAI,CAAC,IAAM,OAAW,CAC1D,QAAQ,KACN,2GAAA,EAEF,QACF,CAEAD,EAAOC,CAAC,EAAIH,EAASE,EAAOC,CAAC,EAAaA,CAAC,CAC7C,CAEA,OAAOD,CACT,EAEaG,GAAwB,CACnCC,EACAL,EACAD,IACG,CACH,IAAIF,EAASQ,EACb,OAAK,MAAM,QAAQR,CAAM,IAAGA,EAAS,CAACA,CAAM,GAErCL,GACLK,EAAO,IAAKS,GAAOf,GAASe,CAAC,EAAIV,GAAcU,EAAGN,EAASD,CAAQ,EAAIO,CAAE,CAAA,CAE7E,EC1EaC,GAAc,CAACC,EAAaC,IACtCA,EAAwBD,EAAhB,OAAOA,CAAG,IAIRE,EAAiB,CAACF,EAAwBC,IACrDF,GAAY,cAAcC,CAAG,GAAIC,CAAK,EAE3BE,EAAmB,CAACH,EAA0BC,IACzDF,GAAY,cAAcC,CAAG,GAAIC,CAAK,ECV3BG,GAA0B,CACrC,mBAAoB,CAClB,UAAWC,EAAG,WAAW,EACzB,oBAAqBA,EAAG,YAAY,CAAA,CAExC,ECLaC,GAAmB,CAC9B,YAAa,CACX,aAAcD,EAAG,cAAc,EAC/B,aAAcA,EAAG,cAAc,EAC/B,YAAaA,EAAG,cAAc,EAC9B,MAAOA,EAAG,aAAa,CAAA,CAE3B,ECPaE,GAAyB,CACpC,kBAAmB,CACjB,mBAAoBF,EAAG,cAAc,EACrC,eAAgBA,EAAG,cAAc,EACjC,eAAgBA,EAAG,WAAW,EAC9B,YAAaA,EAAG,YAAY,EAC5B,mBAAoBA,EAAG,WAAW,EAClC,0BAA2BA,EAAG,YAAY,EAC1C,qBAAsBA,EAAG,YAAY,EACrC,oBAAqBA,EAAG,WAAW,EACnC,uBAAwBA,EAAG,WAAW,CAAA,CAE1C,ECZaG,GAAkB,CAC7B,SAAU,CACR,mBAAoBH,EAAG,aAAa,EACpC,eAAgBA,EAAG,cAAc,EACjC,4BAA6BA,EAAG,cAAc,EAC9C,2BAA4BA,EAAG,eAAe,EAC9C,uBAAwBA,EAAG,eAAe,EAC1C,oCAAqCA,EAAG,mBAAmB,EAC3D,gCAAiCA,EAAG,mBAAmB,EACvD,KAAM,OACN,gBAAiBA,EAAG,WAAW,EAC/B,eAAgBA,EAAG,WAAW,CAAA,CAElC,ECbaI,GAA8B,CACzC,uBAAwB,CACtB,mBAAoBJ,EAAG,aAAa,EACpC,eAAgBA,EAAG,cAAc,EACjC,gBAAiBA,EAAG,WAAW,EAC/B,eAAgBA,EAAG,YAAY,EAC/B,uBAAwBA,EAAG,WAAW,EACtC,aAAc,MACd,wBAAyBA,EAAG,WAAW,EACvC,4BAA6BA,EAAG,WAAW,EAC3C,QAAS,GAAGA,EAAG,WAAW,CAAC,IAAIA,EAAG,WAAW,CAAC,EAAA,EAEhD,+BAAgC,CAC9B,yBAA0BA,EAAG,cAAc,EAC3C,6BAA8B,YAC9B,4BAA6BA,EAAG,mBAAmB,EACnD,mBAAoBA,EAAG,cAAc,EACrC,qBAAsBA,EAAG,cAAc,EACvC,yBAA0B,YAC1B,wBAAyBA,EAAG,eAAe,EAC3C,eAAgBA,EAAG,cAAc,EACjC,gBAAiBA,EAAG,WAAW,EAC/B,eAAgBA,EAAG,WAAW,EAC9B,QAAS,GAAGA,EAAG,WAAW,CAAC,IAAIA,EAAG,WAAW,CAAC,EAAA,CAElD,ECzBaK,GAA0B,CACrC,6BAA8B,CAC5B,gBAAiBL,EAAG,WAAW,EAC/B,eAAgB,QAChB,eAAgBA,EAAG,cAAc,CAAA,EAEnC,oCAAqC,CACnC,mBAAoBA,EAAG,cAAc,EACrC,IAAKA,EAAG,WAAW,EACnB,QAAS,SAAA,EAEX,qCAAsC,CACpC,mBAAoBA,EAAG,aAAa,EACpC,IAAKA,EAAG,WAAW,EACnB,QAASA,EAAG,WAAW,CAAA,CAE3B,EChBaM,GAAgB,CAC3B,OAAQ,CACN,gBAAiBN,EAAG,YAAY,EAChC,YAAaA,EAAG,cAAc,EAC9B,qBAAsB,MACtB,sBAAuBA,EAAG,cAAc,EACxC,mBAAoBA,EAAG,YAAY,EACnC,eAAgB,MAChB,eAAgBA,EAAG,cAAc,EACjC,mBAAoB,mCACpB,oBAAqB,mCAAA,CAEzB,ECZaO,GAAc,CACzB,KAAM,CACJ,oBAAqBP,EAAG,YAAY,EACpC,uBAAwBA,EAAG,YAAY,EACvC,2BAA4BA,EAAG,WAAW,EAC1C,mBAAoBA,EAAG,YAAY,EACnC,oBAAqBA,EAAG,WAAW,EACnC,oBAAqBA,EAAG,qBAAqB,EAC7C,kBAAmBA,EAAG,eAAe,EACrC,oBAAqBA,EAAG,oBAAoB,EAC5C,eAAgB,OAChB,oBAAqBA,EAAG,qBAAqB,EAC7C,qBAAsBA,EAAG,WAAW,EACpC,cAAe,QACf,qBAAsB,GAAGA,EAAG,WAAW,CAAC,IAAA,CAE5C,EChBaQ,GAAyB,CACpC,kBAAmB,CACjB,eAAgB,QAChB,eAAgBV,EAAiB,cAAc,CAAA,CAEnD,ECLaW,GAAqB,CAChC,cAAe,CACb,QAAS,IACT,gBAAiBT,EAAG,WAAW,EAC/B,mBAAoB,cACpB,eAAgB,cAChB,OAAQ,UACR,kBAAmB,cAEnB,mBAAoBA,EAAG,aAAa,EACpC,kBAAmBA,EAAG,eAAe,EACrC,mBAAoBA,EAAG,aAAa,EACpC,kBAAmBA,EAAG,cAAc,EACpC,oBAAqBA,EAAG,cAAc,EACtC,oBAAqBA,EAAG,cAAc,EACtC,iBAAkBA,EAAG,WAAW,EAChC,mBAAoBA,EAAG,aAAa,EACpC,oBAAqBA,EAAG,cAAc,EACtC,cAAe,MACf,YAAa,MACb,0BAA2B,0BAAA,CAE/B,ECtBaU,GAAc,CACzB,KAAM,CACJ,aAAcV,EAAG,aAAa,EAC9B,YAAaA,EAAG,eAAe,EAC/B,aAAcA,EAAG,aAAa,EAC9B,YAAaA,EAAG,cAAc,EAC9B,cAAeA,EAAG,cAAc,EAChC,cAAeA,EAAG,cAAc,EAChC,WAAYA,EAAG,WAAW,EAC1B,aAAcA,EAAG,aAAa,EAC9B,cAAeA,EAAG,cAAc,EAChC,WAAYA,EAAG,YAAY,EAC3B,WAAYA,EAAG,YAAY,EAC3B,UAAWA,EAAG,YAAY,EAC1B,YAAaA,EAAG,YAAY,EAC5B,WAAYA,EAAG,YAAY,EAC3B,aAAcA,EAAG,YAAY,EAC7B,YAAaA,EAAG,YAAY,CAAA,CAEhC,ECnBaW,GAAkC,CAC7C,2BAA4B,CAC1B,IAAKX,EAAG,YAAY,EACpB,iBAAkBA,EAAG,YAAY,EACjC,YAAaA,EAAG,WAAW,EAC3B,GAAIA,EAAG,aAAa,CAAA,CAExB,ECPaY,GAAe,CAC1B,MAAO,CACL,4BAA6BZ,EAAG,cAAc,EAC9C,mBAAoBA,EAAG,aAAa,EACpC,sBAAuBA,EAAG,aAAa,EACvC,uBAAwBA,EAAG,WAAW,EACtC,eAAgBA,EAAG,cAAc,EACjC,gBAAiBA,EAAG,WAAW,EAC/B,eAAgBA,EAAG,WAAW,EAC9B,iBAAkBA,EAAG,cAAc,EACnC,cAAeA,EAAG,qBAAqB,EACvC,kBAAmBA,EAAG,cAAc,EACpC,YAAaA,EAAG,eAAe,EAC/B,cAAeA,EAAG,oBAAoB,EACtC,YAAaA,EAAG,WAAW,EAC3B,cAAeA,EAAG,qBAAqB,EACvC,oBAAqBA,EAAG,YAAY,EACpC,qBAAsBA,EAAG,YAAY,EACrC,YAAaA,EAAG,WAAW,EAC3B,kBAAmB,MACnB,YAAaA,EAAG,WAAW,EAC3B,MAAOA,EAAG,aAAa,EACvB,OAAQ,MAAA,CAEZ,ECxBaa,GAAc,CACzB,KAAM,CACJ,gBAAiBb,EAAG,eAAe,EACnC,eAAgBA,EAAG,cAAc,EACjC,gBAAiBA,EAAG,eAAe,EACnC,iBAAkBA,EAAG,gBAAgB,EACrC,cAAeA,EAAG,qBAAqB,EACvC,cAAeA,EAAG,kBAAkB,EACpC,cAAeA,EAAG,qBAAqB,EACvC,MAAOA,EAAG,eAAe,EACzB,cAAeA,EAAG,mBAAmB,EACrC,eAAgBA,EAAG,mBAAmB,EACtC,iBAAkBA,EAAG,cAAc,CAAA,CAEvC,ECdac,GAAe,CAC1B,MAAO,CACL,qBAAsB,qBACtB,mBAAoBd,EAAG,aAAa,EACpC,cAAeA,EAAG,YAAY,EAC9B,UAAWA,EAAG,WAAW,EACzB,gBAAiBA,EAAG,YAAY,EAChC,gBAAiBA,EAAG,YAAY,EAChC,eAAgBA,EAAG,YAAY,EAC/B,eAAgBA,EAAG,YAAY,EAC/B,UAAWA,EAAG,WAAW,EACzB,eAAgBA,EAAG,WAAW,EAC9B,eAAgBA,EAAG,cAAc,EACjC,qBAAsB,OAAA,CAE1B,ECfae,GAAuB,CAClC,gBAAiB,CACf,gBAAiB,MACjB,eAAgB,QAChB,wBAAyB,MACzB,qBAAsBjB,EAAiB,WAAW,EAClD,eAAgBA,EAAiB,cAAc,EAC/C,wBAAyBA,EAAiB,eAAe,CAAA,EAE3D,uBAAwB,CACtB,GAAIA,EAAiB,cAAc,EACnC,eAAgB,QAChB,eAAgBA,EAAiB,cAAc,EAC/C,gBAAiB,MACjB,QAAS,WACT,IAAKA,EAAiB,WAAW,EACjC,UAAWA,EAAiB,WAAW,CAAA,CAE3C,EClBakB,GAAmB,CAC9B,UAAW,CACT,eAAgBlB,EAAiB,WAAW,EAC5C,gBAAiBA,EAAiB,WAAW,EAC7C,QAASA,EAAiB,WAAW,EACrC,mBAAoBA,EAAiB,cAAc,EACnD,eAAgBA,EAAiB,cAAc,EAC/C,eAAgBA,EAAiB,cAAc,EAC/C,wBAAyBA,EAAiB,cAAc,EACxD,0BAA2BA,EAAiB,cAAc,EAC1D,gCAAiCA,EAAiB,cAAc,EAChE,iCAAkCA,EAAiB,cAAc,EACjE,mBAAoB,MACpB,mBAAoB,OACpB,sBAAuBA,EAAiB,WAAW,EACnD,sBAAuB,cACvB,mBAAoBA,EAAiB,eAAe,EACpD,qBAAsBA,EAAiB,oBAAoB,EAC3D,qBAAsBA,EAAiB,qBAAqB,EAC5D,aAAcA,EAAiB,WAAW,EAC1C,6BAA8BA,EAAiB,aAAa,EAC5D,kBAAmBA,EAAiB,aAAa,CAAA,CAErD,ECvBamB,GAAgB,CAC3B,OAAQ,CACN,YAAajB,EAAG,eAAe,EAC/B,cAAeA,EAAG,WAAW,EAC7B,eAAgBA,EAAG,cAAc,CAAA,EAEnC,OAAQ,CACN,aAAcA,EAAG,WAAW,EAC5B,cAAeA,EAAG,qBAAqB,EACvC,YAAaA,EAAG,eAAe,EAC/B,kBAAmBA,EAAG,cAAc,EACpC,WAAYA,EAAG,aAAa,EAC5B,uBAAwBA,EAAG,kBAAkB,EAC7C,MAAOA,EAAG,aAAa,EACvB,iBAAkBA,EAAG,cAAc,EACnC,QAAS,SAAA,CAEb,ECjBakB,GAAuB,CAClC,OAAQ,CACN,SAAUlB,EAAG,YAAY,EACzB,SAAUA,EAAG,WAAW,EACxB,GAAIA,EAAG,WAAW,EAClB,OAAQ,UACR,cAAeA,EAAG,qBAAqB,EACvC,YAAaA,EAAG,eAAe,EAC/B,iBAAkBA,EAAG,WAAW,EAChC,eAAgB,MAChB,cAAeA,EAAG,kBAAkB,EACpC,cAAe,OAAOA,EAAG,WAAW,CAAC,WACrC,iBAAkB,MAGlB,GAAIA,EAAG,eAAe,EACtB,WAAYA,EAAG,mBAAmB,EAClC,YAAaA,EAAG,mBAAmB,EACnC,cAAeA,EAAG,cAAc,EAChC,OAAQA,EAAG,eAAe,EAC1B,eAAgBA,EAAG,mBAAmB,EACtC,gBAAiBA,EAAG,mBAAmB,EACvC,kBAAmBA,EAAG,cAAc,EACpC,MAAOA,EAAG,aAAa,EACvB,cAAeA,EAAG,aAAa,EAC/B,eAAgBA,EAAG,aAAa,EAChC,iBAAkBA,EAAG,aAAa,EAElC,eAAgBA,EAAG,aAAa,EAChC,qBAAsBA,EAAG,aAAa,EACtC,sBAAuBA,EAAG,aAAa,EACvC,wBAAyBA,EAAG,cAAc,EAC1C,mBAAoBA,EAAG,eAAe,EACtC,yBAA0BA,EAAG,mBAAmB,EAChD,0BAA2BA,EAAG,mBAAmB,EACjD,4BAA6BA,EAAG,cAAc,EAC9C,kBAAmBA,EAAG,eAAe,EACrC,wBAAyBA,EAAG,mBAAmB,EAC/C,yBAA0BA,EAAG,mBAAmB,EAChD,2BAA4BA,EAAG,cAAc,EAE7C,gBAAiBA,EAAG,aAAa,EACjC,sBAAuBA,EAAG,aAAa,EACvC,uBAAwBA,EAAG,aAAa,EACxC,yBAA0BA,EAAG,aAAa,EAC1C,oBAAqBA,EAAG,aAAa,EACrC,0BAA2BA,EAAG,aAAa,EAC3C,2BAA4BA,EAAG,aAAa,EAC5C,6BAA8BA,EAAG,aAAa,EAC9C,mBAAoBA,EAAG,eAAe,EACtC,yBAA0BA,EAAG,mBAAmB,EAChD,0BAA2BA,EAAG,mBAAmB,EACjD,4BAA6BA,EAAG,cAAc,CAAA,CAElD,ECtDamB,GAAsB,CACjC,MAAO,CACL,IAAKnB,EAAG,WAAW,CAAA,EAErB,oBAAqB,CACnB,IAAKA,EAAG,WAAW,CAAA,EAErB,0BAA2B,CACzB,MAAOA,EAAG,eAAe,CAAA,CAE7B,ECVaoB,GAAqB,CAChC,KAAM,CACJ,cAAetB,EAAiB,qBAAqB,EACrD,cAAeA,EAAiB,qBAAqB,EACrD,UAAWA,EAAiB,gBAAgB,EAC5C,UAAWA,EAAiB,eAAe,EAC3C,YAAaA,EAAiB,eAAe,EAC7C,aAAcA,EAAiB,cAAc,EAC7C,mBAAoBA,EAAiB,kBAAkB,EACvD,qBAAsBA,EAAiB,oBAAoB,EAC3D,aAAcA,EAAiB,aAAa,EAC5C,cAAeA,EAAiB,aAAa,EAC7C,cAAeA,EAAiB,aAAa,EAC7C,YAAaA,EAAiB,WAAW,EACzC,aAAcA,EAAiB,eAAe,EAC9C,aAAcA,EAAiB,cAAc,EAC7C,iBAAkBA,EAAiB,cAAc,EACjD,eAAgBA,EAAiB,cAAc,EAC/C,eAAgBA,EAAiB,cAAc,CAAA,CAEnD,ECpBauB,GAAa,CACxB,IAAK,CACH,oBAAqBvB,EAAiB,WAAW,EACjD,oBAAqB,IACrB,aAAcA,EAAiB,WAAW,EAC1C,mBAAoBA,EAAiB,YAAY,EACjD,kBAAmBA,EAAiB,cAAc,EAClD,+BAAgCA,EAAiB,cAAc,EAC/D,gCAAiCA,EAAiB,WAAW,CAAA,CAEjE,ECDawB,GAAa,CACxB,IAAK,CACH,cAAexB,EAAiB,qBAAqB,EACrD,kBAAmBA,EAAiB,cAAc,EAClD,iBAAkBA,EAAiB,aAAa,EAChD,iBAAkBA,EAAiB,aAAa,EAChD,eAAgBA,EAAiB,WAAW,EAC5C,kBAAmBA,EAAiB,cAAc,EAClD,gBAAiBA,EAAiB,YAAY,EAC9C,oBAAqBA,EAAiB,aAAa,EACnD,cAAeA,EAAiB,aAAa,EAC7C,aAAcA,EAAiB,aAAa,EAC5C,iBAAkBA,EAAiB,cAAc,EACjD,gBAAiBA,EAAiB,WAAW,EAC7C,eAAgBA,EAAiB,cAAc,EAC/C,OAAQA,EAAiB,YAAY,EACrC,QAAS,SAAA,CAEb,EC3BayB,GAAkB,CAC7B,SAAU,CACR,QAASvB,EAAG,WAAW,EACvB,mBAAoBA,EAAG,aAAa,EACpC,YAAaA,EAAG,eAAe,EAC/B,cAAeA,EAAG,qBAAqB,EACvC,cAAeA,EAAG,oBAAoB,EACtC,MAAOA,EAAG,aAAa,EACvB,eAAgBA,EAAG,WAAW,EAC9B,eAAgBA,EAAG,cAAc,EACjC,aAAc,OACd,sBAAuBA,EAAG,aAAa,EACvC,gBAAiBA,EAAG,WAAW,EAC/B,uBAAwBA,EAAG,WAAW,EACtC,4BAA6BA,EAAG,cAAc,EAC9C,iBAAkBA,EAAG,cAAc,CAAA,CAEvC,ECjBawB,GAAgB,CAC3B,mBAAoB,CAClB,IAAK,KAAA,EAEP,eAAgB,CACd,oCAAqCxB,EAAG,mBAAmB,EAC3D,mCAAoCA,EAAG,eAAe,EACtD,sCAAuCA,EAAG,cAAc,EACxD,qCAAsCA,EAAG,cAAc,EACvD,gBAAiBA,EAAG,YAAY,EAChC,qBAAsB,MACtB,mBAAoB,MACpB,sBAAuB,OAAA,EAEzB,eAAgB,CACd,mCAAoCA,EAAG,aAAa,EACpD,oCAAqCA,EAAG,aAAa,EACrD,qCAAsCA,EAAG,aAAa,EACtD,sCAAuCA,EAAG,cAAc,EACxD,gBAAiB,OACjB,aACE,gFACF,OAAQ,MACR,MAAO,MACP,sBAAuB,OAAA,CAE3B,EC1BayB,GAAsB,CACjC,yBAA0B,CACxB,IAAKzB,EAAG,YAAY,CAAA,EAEtB,sBAAuB,CACrB,IAAKA,EAAG,WAAW,EACnB,iBAAkBA,EAAG,cAAc,EACnC,YAAaA,EAAG,cAAc,CAAA,CAElC,ECTa0B,GAAmB,CAC9B,SAAU,CACR,0BAA2B1B,EAAG,cAAc,EAC5C,4BAA6BA,EAAG,mBAAmB,EACnD,mBAAoBA,EAAG,aAAa,EACpC,gBAAiB,MACjB,aAAc,sCACd,sBAAuB,MACvB,oBAAqBA,EAAG,WAAW,EACnC,UAAWA,EAAG,WAAW,EACzB,0BAA2B,MAC3B,OAAQ,OACR,QAASA,EAAG,WAAW,CAAA,CAE3B,ECda2B,GAAsB,CACjC,eAAgB,CACd,KAAM7B,EAAiB,YAAY,EACnC,aAAcA,EAAiB,WAAW,EAC1C,eAAgBA,EAAiB,cAAc,EAC/C,mBAAoBA,EAAiB,aAAa,EAClD,eAAgBA,EAAiB,WAAW,EAC5C,gBAAiB,MACjB,uBAAwBA,EAAiB,eAAe,EACxD,4BAA6BA,EAAiB,cAAc,CAAA,CAEhE,ECXa8B,GAA0B,CACrC,mBAAoB,CAClB,cAAe9B,EAAiB,YAAY,EAC5C,eAAgBA,EAAiB,YAAY,EAC7C,gBAAiBA,EAAiB,WAAW,EAC7C,eAAgBA,EAAiB,WAAW,EAC5C,eAAgBA,EAAiB,cAAc,EAC/C,mBAAoBA,EAAiB,aAAa,EAClD,2BAA4BA,EAAiB,cAAc,EAC3D,IAAKA,EAAiB,WAAW,CAAA,CAErC,ECXa+B,GAAoB,CAC/B,aAAc,CACZ,YAAa/B,EAAiB,YAAY,EAC1C,WAAYA,EAAiB,YAAY,EACzC,cAAeA,EAAiB,WAAW,EAC3C,iBAAkBA,EAAiB,WAAW,EAC9C,iBAAkBA,EAAiB,WAAW,CAAA,CAElD,ECRagC,GAAyB,CACpC,kBAAmB,CACjB,aAAchC,EAAiB,WAAW,EAC1C,UAAWA,EAAiB,WAAW,EACvC,iBAAkBA,EAAiB,aAAa,EAChD,4BAA6BA,EAAiB,eAAe,EAC7D,YAAaA,EAAiB,WAAW,EACzC,gBAAiBA,EAAiB,YAAY,EAC9C,eAAgBA,EAAiB,YAAY,EAC7C,4BAA6BA,EAAiB,YAAY,CAAA,CAE9D,ECXaiC,GAAyB,CACpC,kBAAmB,CACjB,UAAW/B,EAAG,WAAW,EACzB,oBAAqBA,EAAG,YAAY,EACpC,YAAaA,EAAG,WAAW,EAC3B,YAAaA,EAAG,YAAY,EAC5B,mBAAoBA,EAAG,aAAa,EACpC,4BAA6BA,EAAG,cAAc,EAC9C,yBAA0BA,EAAG,cAAc,EAC3C,kCAAmCA,EAAG,aAAa,EACnD,eAAgBA,EAAG,cAAc,EACjC,gBAAiBA,EAAG,WAAW,CAAA,CAEnC,ECbagC,GAAyB,CACpC,kBAAmB,CACjB,OAAQhC,EAAG,WAAW,EACtB,eAAgBA,EAAG,cAAc,EACjC,wBAAyBA,EAAG,eAAe,EAC3C,QAASA,EAAG,YAAY,EACxB,gBAAiBA,EAAG,WAAW,EAC/B,gBAAiBA,EAAG,WAAW,EAC/B,UAAWA,EAAG,WAAW,EACzB,aAAcA,EAAG,WAAW,CAAA,CAEhC,ECXaiC,GAAwB,CACnC,iBAAkB,CAChB,sBAAuB,UACvB,qBAAsB,UACtB,mBAAoB,UACpB,yBAA0B,UAC1B,sBAAuB,UACvB,qBAAsB,UACtB,kBAAmB,UACnB,wBAAyB,UACzB,iBAAkB,UAClB,gBAAiB,UAEjB,qBAAsBjC,EAAG,WAAW,EACpC,sBAAuBA,EAAG,cAAc,EACxC,mBAAoBA,EAAG,aAAa,EAEpC,aAAcA,EAAG,YAAY,EAC7B,QAAS,YAET,aAAc,OACd,eAAgB,IAEhB,cAAeA,EAAG,WAAW,EAE7B,kBAAmBA,EAAG,YAAY,EAClC,mBAAoBA,EAAG,WAAW,CAAA,CAEtC,EC5BakC,GAA0B,CACrC,0BAA2B,CACzB,wBACE,sDACF,qBAAsB,4CACtB,oBAAqBlC,EAAG,cAAc,EACtC,UAAWA,EAAG,WAAW,EACzB,iBAAkB,kBAClB,eAAgB,oBAChB,kBAAmBA,EAAG,WAAW,CAAA,CAErC,ECXamC,GAAe,CAC1B,MAAO,CACL,yBAA0BrC,EAAiB,YAAY,EACvD,eAAgBA,EAAiB,cAAc,EAC/C,gCAAiCA,EAAiB,cAAc,EAChE,0BAA2BA,EAAiB,cAAc,EAC1D,iBAAkBA,EAAiB,WAAW,EAC9C,iBAAkB,OAClB,8BAA+BA,EAAiB,WAAW,EAC3D,oBAAqBA,EAAiB,WAAW,EACjD,mBAAoBA,EAAiB,aAAa,EAClD,iBAAkBA,EAAiB,eAAe,EAClD,aAAcA,EAAiB,aAAa,EAC5C,mBAAoBA,EAAiB,kBAAkB,EACvD,iBAAkBA,EAAiB,eAAe,EAClD,aAAcA,EAAiB,aAAa,EAC5C,mBAAoBA,EAAiB,oBAAoB,EACzD,cAAeA,EAAiB,qBAAqB,CAAA,CAEzD,ECnBasC,GAA0B,CACrC,mBAAoB,CAClB,eAAgBtC,EAAiB,cAAc,EAC/C,qBAAsBA,EAAiB,cAAc,EACrD,oBAAqBA,EAAiB,cAAc,EACpD,eAAgBA,EAAiB,WAAW,CAAA,CAEhD,ECPauC,GAAqB,CAChC,cAAe,CAEb,mBAAoBrC,EAAG,cAAc,EACrC,0BAA2BA,EAAG,aAAa,EAC3C,sBAAuBA,EAAG,eAAe,EAEzC,mBAAoBA,EAAG,YAAY,EACnC,mBAAoBA,EAAG,YAAY,EACnC,qBAAsBA,EAAG,WAAW,EACpC,aAAcA,EAAG,WAAW,EAC5B,sBAAuBA,EAAG,cAAc,EAExC,mBAAoBA,EAAG,YAAY,EACnC,mBAAoBA,EAAG,YAAY,EACnC,sBAAuBA,EAAG,WAAW,EACrC,qBAAsBA,EAAG,YAAY,EACrC,sBAAuBA,EAAG,cAAc,EAExC,oBAAqBA,EAAG,YAAY,EACpC,yBAA0BA,EAAG,WAAW,EACxC,0BAA2BA,EAAG,cAAc,EAC5C,6BAA8BA,EAAG,YAAY,EAC7C,uBAAwBA,EAAG,YAAY,EACvC,uBAAwB,QACxB,oBAAqBA,EAAG,WAAW,EACnC,+BAAgCA,EAAG,YAAY,EAC/C,kCAAmCA,EAAG,WAAW,EACjD,qCAAsCA,EAAG,cAAc,EACvD,kCAAmCA,EAAG,WAAW,EACjD,sCAAuCA,EAAG,eAAe,EACzD,+CAAgDA,EAAG,cAAc,EAEjE,sBAAuBA,EAAG,YAAY,EACtC,sBAAuBA,EAAG,YAAY,EACtC,gBAAiBA,EAAG,YAAY,EAChC,iCAAkCA,EAAG,WAAW,EAChD,wBAAyBA,EAAG,WAAW,EACvC,qBAAsBA,EAAG,WAAW,EACpC,2BAA4BA,EAAG,WAAW,EAE1C,mCAAoCA,EAAG,YAAY,EACnD,2BAA4BA,EAAG,WAAW,EAC1C,2BAA4BA,EAAG,YAAY,EAC3C,qBAAsBA,EAAG,WAAW,EACpC,gCAAiCA,EAAG,WAAW,EAC/C,gCAAiCA,EAAG,WAAW,EAC/C,oCAAqCA,EAAG,WAAW,EACnD,qCAAsCA,EAAG,WAAW,EACpD,gCAAiCA,EAAG,cAAc,EAElD,sBAAuBA,EAAG,YAAY,EACtC,4BAA6BA,EAAG,WAAW,EAC3C,oBAAqBA,EAAG,YAAY,EACpC,yBAA0BA,EAAG,YAAY,EACzC,+BAAgCA,EAAG,YAAY,EAC/C,4BAA6BA,EAAG,YAAY,EAC5C,kCAAmCA,EAAG,WAAW,EACjD,4BAA6BA,EAAG,YAAY,EAC5C,2BAA4BA,EAAG,WAAW,EAC1C,iCAAkCA,EAAG,cAAc,EACnD,kCAAmCA,EAAG,WAAW,EACjD,wCAAyCA,EAAG,WAAW,EACvD,2CAA4CA,EAAG,cAAc,CAAA,CAEjE,ECnEasC,GAA2B,CACtC,oBAAqB,CACnB,QAAS,KAAA,CAEb,ECFaC,GAAsB,CACjC,eAAgB,CACd,eAAgBzC,EAAiB,WAAW,EAC5C,YAAaA,EAAiB,YAAY,EAC1C,YAAaA,EAAiB,WAAW,EACzC,gBAAiBA,EAAiB,WAAW,EAC7C,OAAQA,EAAiB,WAAW,EACpC,eAAgBA,EAAiB,cAAc,EAC/C,0BAA2BA,EAAiB,cAAc,EAC1D,qBAAsBA,EAAiB,cAAc,EACrD,IAAKA,EAAiB,WAAW,EACjC,WAAYA,EAAiB,aAAa,EAC1C,iBAAkBA,EAAiB,YAAY,EAC/C,iBAAkBA,EAAiB,WAAW,EAC9C,WAAYA,EAAiB,WAAW,EACxC,gBAAiBA,EAAiB,cAAc,EAChD,0BAA2BA,EAAiB,WAAW,EACvD,0BAA2BA,EAAiB,WAAW,EACvD,oBAAqBA,EAAiB,WAAW,EACjD,2BAA4BA,EAAiB,cAAc,EAC3D,iCAAkCA,EAAiB,cAAc,EACjE,uBAAwBA,EAAiB,WAAW,CAAA,CAExD,ECvBa0C,GAAe,CAC1B,MAAO,CACL,aAAc1C,EAAiB,YAAY,EAC3C,oBAAqB,yBACrB,YAAaA,EAAiB,WAAW,EACzC,mBAAoB,uBACpB,cAAeA,EAAiB,aAAa,EAC7C,qBAAsB,2BACtB,cAAeA,EAAiB,aAAa,EAC7C,qBAAsB,qBACtB,eAAgBA,EAAiB,cAAc,EAC/C,sBAAuB,yBACvB,cAAeA,EAAiB,aAAa,EAC7C,qBAAsB,wBAAA,CAE1B,ECyBa2C,GAAmB,CAC9B,GAAG1C,GACH,GAAGE,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,GACH,GAAGa,GACH,GAAGZ,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,EACL,ECpFaG,GAAmB,CAC9B,MAAO,CAEL,MAAO,UACP,OAAQ,UACR,OAAQ,UACR,OAAQ,UACR,OAAQ,UACR,OAAQ,UACR,OAAQ,UACR,OAAQ,UACR,OAAQ,UACR,OAAQ,UACR,OAAQ,UACR,QAAS,UAET,MAAO,UACP,OAAQ,UACR,OAAQ,UACR,OAAQ,UACR,OAAQ,UAER,OAAQ,UACR,KAAM,UACN,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,SAAA,CAEb,EC7BaC,GAAyB,CACpC,YAAa,CACX,OAAQ,OACR,OAAQ,OACR,OAAQ,OACR,OAAQ,MAAA,EAEV,cAAe,CACb,IAAO,MACP,IAAO,KAAA,EAET,cAAe,CACb,MAAO,mBAAA,EAET,cAAe,CACb,IAAO,KAAA,CAEX,ECjBaC,GAAqB,CAChC,QAAS,CACP,QAAS,QACT,MAAO,MACP,MAAO,MACP,MAAO,MACP,MAAO,MACP,MAAO,MACP,MAAO,MACP,MAAO,MACP,OAAQ,OACR,OAAQ,OACR,OAAQ,OACR,OAAQ,OACR,OAAQ,OACR,OAAQ,OACR,OAAQ,OACR,OAAQ,OACR,OAAQ,OACR,OAAQ,OACR,OAAQ,OACR,OAAQ,OACR,OAAQ,OACR,OAAQ,OACR,OAAQ,MAAA,CAEZ,ECtBaC,GAAgB,CAC3B,GAAGH,GACH,GAAGC,GACH,GAAGC,EACL,ECNaE,GAA4B,CAGvC,MAAO,CACL,MAAOjD,EAAe,aAAa,EACnC,OAAQA,EAAe,cAAc,EACrC,OAAQA,EAAe,cAAc,EACrC,OAAQA,EAAe,cAAc,EACrC,OAAQA,EAAe,cAAc,EACrC,OAAQA,EAAe,cAAc,EACrC,OAAQA,EAAe,cAAc,EACrC,OAAQA,EAAe,cAAc,EACrC,OAAQA,EAAe,cAAc,EACrC,OAAQA,EAAe,cAAc,EACrC,OAAQA,EAAe,cAAc,EACrC,MAAOA,EAAe,eAAe,EACrC,QAASA,EAAe,cAAc,EACtC,aAAcA,EAAe,aAAa,EAC1C,YAAaA,EAAe,cAAc,EAC1C,YAAaA,EAAe,cAAc,EAC1C,YAAaA,EAAe,cAAc,EAC1C,MAAOA,EAAe,cAAc,EACpC,OAAQA,EAAe,eAAe,EACtC,IAAKA,EAAe,YAAY,EAChC,OAAQA,EAAe,eAAe,EACtC,KAAMA,EAAe,cAAc,EACnC,OAAQA,EAAe,eAAe,CAAA,CAE1C,EC5BakD,GAAkC,CAC7C,YAAa,CACX,GAAIlD,EAAe,gBAAgB,EACnC,IAAKA,EAAe,gBAAgB,EACpC,IAAKA,EAAe,gBAAgB,EACpC,KAAMA,EAAe,gBAAgB,CAAA,EAEvC,cAAe,CACb,OAAQA,EAAe,iBAAiB,EACxC,KAAMA,EAAe,iBAAiB,CAAA,EAExC,cAAe,CACb,QAASA,EAAe,mBAAmB,CAAA,EAE7C,cAAe,CACb,QAASA,EAAe,iBAAiB,CAAA,CAE7C,ECjBamD,GAA8B,CACzC,QAAS,CACP,EAAKnD,EAAe,aAAa,EACjC,EAAKA,EAAe,aAAa,EACjC,EAAKA,EAAe,aAAa,EACjC,EAAKA,EAAe,aAAa,EACjC,EAAKA,EAAe,aAAa,EACjC,GAAMA,EAAe,cAAc,EACnC,GAAMA,EAAe,cAAc,EACnC,GAAMA,EAAe,cAAc,EACnC,GAAMA,EAAe,cAAc,EACnC,GAAMA,EAAe,cAAc,EACnC,GAAMA,EAAe,cAAc,EACnC,GAAMA,EAAe,cAAc,EACnC,GAAMA,EAAe,cAAc,EACnC,GAAMA,EAAe,cAAc,EACnC,GAAMA,EAAe,cAAc,EACnC,GAAMA,EAAe,cAAc,EACnC,GAAMA,EAAe,cAAc,EACnC,GAAMA,EAAe,cAAc,EACnC,GAAMA,EAAe,cAAc,EACnC,GAAMA,EAAe,cAAc,CAAA,EAErC,OAAQ,CACN,IAAKA,EAAe,eAAe,EACnC,GAAIA,EAAe,aAAa,EAChC,IAAKA,EAAe,aAAa,EACjC,IAAKA,EAAe,aAAa,CAAA,CAErC,EC3BaoD,GAAkB,CAC7B,GAAGH,GACH,GAAGC,GACH,GAAGC,EACL,EC+DaE,GAA4B,CACvCC,EACAC,EAAS,aAET,OAAO,KAAKD,CAAM,EAAE,QAASE,GAC3B,OAAO,KAAKF,EAAOE,CAAS,CAAC,EAAE,IAC5B1D,GAAQ,KAAKyD,CAAM,IAAIC,CAAS,IAAI1D,CAAG,KAAKwD,EAAOE,CAAS,EAAE1D,CAAG,CAAC,EAAA,CAEvE,EAiDW2D,GAAyB,CAGpCH,EACAI,EAGI,KACD,CACH,KAAM,CAAE,OAAAH,EAAS,WAAY,gBAAAI,EAAkB,SAAYD,EA0BrDE,EACJC,GAQAA,EAAW,IACRL,GAAc,CAAC1D,EAAaC,IAC3BF,GAAY,KAAK0D,CAAM,IAAI,OAAOC,CAAS,CAAC,IAAI1D,CAAG,GAAIC,CAAK,CAAA,EAqB5D+D,EAAyBC,EAAAA;AAAAA,MAC3BJ,CAAe;AAAA,QACbN,GAA0BC,EAAQC,CAAM,EAAE,KAAK;AAAA,OAAW,CAAC;AAAA;AAAA,IAIjE,MAAO,CACL,8BAAAK,EACA,uBAAAE,CAAA,CAEJ,EAuBaE,GACX,CAAuBR,EAAmBD,EAAS,aACnD,CAACzD,EAAYC,IACXF,GAAY,KAAK0D,CAAM,IAAIC,CAAS,IAAI1D,CAAG,GAAIC,CAAK,EAyB3CkE,GAA+B,CAC1CX,EACAI,EAEI,KACD,CACH,KAAM,CAAE,OAAAH,EAAS,UAAA,EAAeG,EAEhC,OAAOK,EAAAA;AAAAA,MACHV,GAA0BC,EAAQC,CAAM,EAAE,KAAK;AAAA,KAAS,CAAC;AAAA,GAE/D,ECnPaW,EAGXL,GAQAA,EAAW,IACRL,GAAc,CAAC1D,EAAKC,IACnBF,GAAY,cAAc2D,CAAS,IAAI1D,CAAG,GAAIC,CAAK,CAAA,EAGnDoE,GAAuB,CAC3Bb,EAGAc,IAEA,OAAO,KAAKd,CAAM,EAAE,QAASxD,GAC3B,OAAO,KAAKwD,EAAOxD,CAAG,CAAC,EAAE,IACtBuE,GACC,GAAGD,EAAa,GAAGtE,CAAG,IAAIuE,CAAM,GAAS,EAAI,CAAC,KAAKf,EAAOxD,CAAG,EAAEuE,CAAM,CAAC,EAAA,CAE5E,EAEWC,GAAyBP,EAAAA;AAAAA;AAAAA,MAEhCI,GAAqBf,GAAiBnD,CAAgB,CAAC;AAAA;AAAA,EAIhDsE,GAAuBR,EAAAA;AAAAA;AAAAA;AAAAA,4BAGR9D,EAAiB,eAAe,CAAC;AAAA;AAAA;AAAA,MAGvDkE,GAAqBnB,GAAehD,CAAc,CAAC;AAAA;AAAA,EAI5CwE,GAA0BT,EAAAA;AAAAA;AAAAA,MAEjCI,GAAqBvB,GAAkB,CAAC9C,EAAKC,IAC7CF,GAAY,cAAcC,CAAG,GAAIC,CAAK,CACxC,CAAC;AAAA;AAAA,ECvEQ0E,GAAsBV,EAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,ECAtBU,GAAsBV,EAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,ECAtBU,GAAsBV,EAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,ECAtBU,GAAsBV,EAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,ECItBU,GAAsBV,EAAAA;AAAAA;AAAAA;AAAAA,EAKtBW,GAAkB,CAC7BD,GACAE,GACAC,GACAC,GACAC,EACF,ECfaC,GAAoBhB,EAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,ECApBiB,GAAqBjB,EAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,ECOrBkB,GAAalB,EAAAA;AAAAA;AAAAA;AAAAA;A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","x_google_ignoreList":[76,87,88,255,256,257,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364]}
|