├── .editorconfig
├── .github
├── FUNDING.yml
├── ISSUE_TEMPLATE
│ ├── bug_report.md
│ └── feature_request.md
└── workflows
│ ├── build.yml
│ ├── codeql.yml
│ └── deploy-website.yml
├── .gitignore
├── .prettierrc.json
├── CODE_OF_CONDUCT.md
├── LICENSE
├── astro-docs
├── .editorconfig
├── .gitignore
├── .prettierrc.json
├── README.md
├── astro.config.mjs
├── bin
│ └── convert-to-webp.ts
├── package-lock.json
├── package.json
├── public
│ ├── ads.txt
│ ├── assets
│ │ ├── icons.json
│ │ ├── img
│ │ │ ├── accordion-dark.webp
│ │ │ ├── accordion.webp
│ │ │ ├── avatar.webp
│ │ │ ├── avatar.xs.webp
│ │ │ ├── calendar-dark.webp
│ │ │ ├── calendar.webp
│ │ │ ├── canvas.webp
│ │ │ ├── chart-doughnut-dark.webp
│ │ │ ├── chart-doughnut.webp
│ │ │ ├── chart-pie-dark.webp
│ │ │ ├── chart-pie.webp
│ │ │ ├── code-editor-dark.webp
│ │ │ ├── code-editor.webp
│ │ │ ├── code-highlighter-dark.webp
│ │ │ ├── code-highlighter.webp
│ │ │ ├── condition-builder.webp
│ │ │ ├── dropdown-dark.png
│ │ │ ├── dropdown-dark.webp
│ │ │ ├── dropdown.png
│ │ │ ├── dropdown.webp
│ │ │ ├── empty-state-dark.webp
│ │ │ ├── empty-state.webp
│ │ │ ├── favicon.svg
│ │ │ ├── flow-designer.webp
│ │ │ ├── footer-dark.webp
│ │ │ ├── footer.webp
│ │ │ ├── goat.svg
│ │ │ ├── header-dark.webp
│ │ │ ├── header.webp
│ │ │ ├── html-editor-dark.webp
│ │ │ ├── html-editor.webp
│ │ │ ├── image-not-found.webp
│ │ │ ├── list.webp
│ │ │ ├── logo.svg
│ │ │ ├── logo.webp
│ │ │ ├── menu-dark.png
│ │ │ ├── menu-dark.webp
│ │ │ ├── menu.png
│ │ │ ├── menu.webp
│ │ │ ├── modal-dark.webp
│ │ │ ├── modal.webp
│ │ │ ├── modals
│ │ │ │ ├── modal-basic.png
│ │ │ │ ├── modal-large.png
│ │ │ │ ├── modal-long.png
│ │ │ │ ├── modal-small.png
│ │ │ │ └── modal-vertically-centered.png
│ │ │ ├── no-image.jpg
│ │ │ ├── notification-manager-dark.webp
│ │ │ ├── notification-manager.webp
│ │ │ ├── popovers
│ │ │ │ ├── popover-bottom.png
│ │ │ │ ├── popover-left.png
│ │ │ │ ├── popover-right.png
│ │ │ │ └── popover-top.png
│ │ │ ├── select-dark.webp
│ │ │ ├── select.webp
│ │ │ ├── slider-dark.webp
│ │ │ ├── slider.webp
│ │ │ ├── social-logo.webp
│ │ │ ├── table-dark.webp
│ │ │ ├── table.webp
│ │ │ ├── tooltip-dark.webp
│ │ │ ├── tooltip.webp
│ │ │ ├── tooltips
│ │ │ │ ├── tooltip-bottom.png
│ │ │ │ ├── tooltip-left.png
│ │ │ │ ├── tooltip-right.png
│ │ │ │ └── tooltip-top.png
│ │ │ ├── tree-view-dark.webp
│ │ │ ├── tree-view.webp
│ │ │ └── twitter.webp
│ │ └── js
│ │ │ ├── components.page.js
│ │ │ └── main.js
│ ├── favicon.svg
│ ├── humans.txt
│ ├── robots-beta.txt
│ └── robots.txt
├── src
│ ├── _data
│ │ ├── componentsDetails.json
│ │ ├── getComponentDetails.ts
│ │ └── site.json
│ ├── components
│ │ ├── ApiPanel.astro
│ │ ├── BannerLogo.astro
│ │ ├── ComponentCard.astro
│ │ ├── ComponentSectionNav.astro
│ │ ├── Footer.astro
│ │ ├── Highlighter.astro
│ │ ├── HighlighterCard.astro
│ │ └── OverviewPanel.astro
│ ├── env.d.ts
│ ├── layouts
│ │ ├── Base.astro
│ │ ├── Component.astro
│ │ ├── Default.astro
│ │ └── Post.astro
│ ├── pages
│ │ ├── 404.astro
│ │ ├── blog
│ │ │ ├── index.astro
│ │ │ └── posts
│ │ │ │ ├── 2023-08-03-whats-up-nerds.astro
│ │ │ │ └── 2023-08-04-goatui-first-release.astro
│ │ ├── components.astro
│ │ ├── components
│ │ │ ├── accordion-item
│ │ │ │ └── index.astro
│ │ │ ├── accordion
│ │ │ │ ├── _sections
│ │ │ │ │ ├── Multiple.astro
│ │ │ │ │ └── Usage.astro
│ │ │ │ └── index.astro
│ │ │ ├── avatar
│ │ │ │ ├── _sections
│ │ │ │ │ ├── Sizes.astro
│ │ │ │ │ └── Usage.astro
│ │ │ │ └── index.astro
│ │ │ ├── badge
│ │ │ │ ├── _sections
│ │ │ │ │ ├── Examples.astro
│ │ │ │ │ └── Usage.astro
│ │ │ │ └── index.astro
│ │ │ ├── breadcrumb
│ │ │ │ ├── _sections
│ │ │ │ │ └── Usage.astro
│ │ │ │ └── index.astro
│ │ │ ├── button-group
│ │ │ │ ├── _sections
│ │ │ │ │ └── Usage.astro
│ │ │ │ └── index.astro
│ │ │ ├── button
│ │ │ │ ├── _sections
│ │ │ │ │ ├── Colors.astro
│ │ │ │ │ ├── Events.astro
│ │ │ │ │ ├── Icon.astro
│ │ │ │ │ ├── Kind.astro
│ │ │ │ │ ├── Sizes.astro
│ │ │ │ │ ├── States.astro
│ │ │ │ │ ├── Usage.astro
│ │ │ │ │ └── Variants.astro
│ │ │ │ └── index.astro
│ │ │ ├── calendar
│ │ │ │ ├── _sections
│ │ │ │ │ ├── Month.astro
│ │ │ │ │ └── Usage.astro
│ │ │ │ └── index.astro
│ │ │ ├── canvas
│ │ │ │ ├── _sections
│ │ │ │ │ └── Usage.astro
│ │ │ │ └── index.astro
│ │ │ ├── chart-doughnut
│ │ │ │ ├── _sections
│ │ │ │ │ └── Usage.astro
│ │ │ │ └── index.astro
│ │ │ ├── chart-pie
│ │ │ │ ├── _sections
│ │ │ │ │ └── Usage.astro
│ │ │ │ └── index.astro
│ │ │ ├── checkbox
│ │ │ │ ├── _sections
│ │ │ │ │ ├── Disabled.astro
│ │ │ │ │ ├── Events.astro
│ │ │ │ │ ├── Intermediate.astro
│ │ │ │ │ ├── Readonly.astro
│ │ │ │ │ ├── Sizes.astro
│ │ │ │ │ └── Usage.astro
│ │ │ │ └── index.astro
│ │ │ ├── code-editor
│ │ │ │ ├── _sections
│ │ │ │ │ └── usage.astro
│ │ │ │ └── index.astro
│ │ │ ├── code-highlighter
│ │ │ │ ├── _sections
│ │ │ │ │ └── usage.astro
│ │ │ │ └── index.astro
│ │ │ ├── condition-builder
│ │ │ │ ├── _sections
│ │ │ │ │ └── usage.astro
│ │ │ │ └── index.astro
│ │ │ ├── current-time
│ │ │ │ ├── _sections
│ │ │ │ │ ├── timezone.astro
│ │ │ │ │ └── usage.astro
│ │ │ │ └── index.astro
│ │ │ ├── date-picker
│ │ │ │ ├── _sections
│ │ │ │ │ ├── disabled.astro
│ │ │ │ │ ├── events.astro
│ │ │ │ │ ├── sizes.astro
│ │ │ │ │ └── usage.astro
│ │ │ │ └── index.astro
│ │ │ ├── divider
│ │ │ │ ├── _sections
│ │ │ │ │ └── usage.astro
│ │ │ │ └── index.astro
│ │ │ ├── dropdown
│ │ │ │ ├── _sections
│ │ │ │ │ ├── Placements.astro
│ │ │ │ │ ├── Usage.astro
│ │ │ │ │ └── dropdown-menu.astro
│ │ │ │ └── index.astro
│ │ │ ├── empty-state
│ │ │ │ ├── _sections
│ │ │ │ │ ├── full-page.astro
│ │ │ │ │ └── menu.astro
│ │ │ │ └── index.astro
│ │ │ ├── flow-designer
│ │ │ │ ├── _sections
│ │ │ │ │ └── usage.astro
│ │ │ │ └── index.astro
│ │ │ ├── footer
│ │ │ │ ├── _sections
│ │ │ │ │ ├── header-content.astro
│ │ │ │ │ └── usage.astro
│ │ │ │ └── index.astro
│ │ │ ├── form-control
│ │ │ │ ├── _sections
│ │ │ │ │ └── usage.astro
│ │ │ │ └── index.astro
│ │ │ ├── header
│ │ │ │ ├── _sections
│ │ │ │ │ ├── app-header.astro
│ │ │ │ │ ├── header-content.astro
│ │ │ │ │ └── usage.astro
│ │ │ │ └── index.astro
│ │ │ ├── html-editor
│ │ │ │ ├── _sections
│ │ │ │ │ ├── disabled.astro
│ │ │ │ │ ├── theme.astro
│ │ │ │ │ └── usage.astro
│ │ │ │ └── index.astro
│ │ │ ├── icon
│ │ │ │ ├── _sections
│ │ │ │ │ ├── sizes.astro
│ │ │ │ │ ├── usage.astro
│ │ │ │ │ └── variants.astro
│ │ │ │ └── index.astro
│ │ │ ├── input
│ │ │ │ ├── _sections
│ │ │ │ │ ├── events.astro
│ │ │ │ │ ├── sizes.astro
│ │ │ │ │ ├── slots.astro
│ │ │ │ │ ├── states.astro
│ │ │ │ │ └── usage.astro
│ │ │ │ └── index.astro
│ │ │ ├── link
│ │ │ │ ├── _sections
│ │ │ │ │ └── usage.astro
│ │ │ │ └── index.astro
│ │ │ ├── menu
│ │ │ │ ├── _sections
│ │ │ │ │ ├── events.astro
│ │ │ │ │ ├── slots.astro
│ │ │ │ │ └── usage.astro
│ │ │ │ └── index.astro
│ │ │ ├── modal-content
│ │ │ │ └── index.astro
│ │ │ ├── modal
│ │ │ │ ├── _sections
│ │ │ │ │ └── Usage.astro
│ │ │ │ └── index.astro
│ │ │ ├── notification-manager
│ │ │ │ ├── _sections
│ │ │ │ │ └── usage.astro
│ │ │ │ └── index.astro
│ │ │ ├── notification
│ │ │ │ ├── _sections
│ │ │ │ │ ├── HighContrastSection.astro
│ │ │ │ │ ├── States.astro
│ │ │ │ │ ├── Usage.astro
│ │ │ │ │ └── notification-content.astro
│ │ │ │ └── index.astro
│ │ │ ├── number
│ │ │ │ ├── _sections
│ │ │ │ │ ├── events.astro
│ │ │ │ │ ├── slots.astro
│ │ │ │ │ ├── states.astro
│ │ │ │ │ └── usage.astro
│ │ │ │ └── index.astro
│ │ │ ├── popover-content
│ │ │ │ └── index.astro
│ │ │ ├── popover
│ │ │ │ ├── _sections
│ │ │ │ │ ├── Placements.astro
│ │ │ │ │ ├── Tip.astro
│ │ │ │ │ └── Usage.astro
│ │ │ │ └── index.astro
│ │ │ ├── progress
│ │ │ │ ├── _sections
│ │ │ │ │ ├── sizes.astro
│ │ │ │ │ └── usage.astro
│ │ │ │ └── index.astro
│ │ │ ├── select
│ │ │ │ ├── _sections
│ │ │ │ │ ├── managed.astro
│ │ │ │ │ ├── multi-select.astro
│ │ │ │ │ ├── search.astro
│ │ │ │ │ └── usage.astro
│ │ │ │ └── index.astro
│ │ │ ├── sidenav
│ │ │ │ ├── _sections
│ │ │ │ │ ├── events.astro
│ │ │ │ │ ├── icon-menu.astro
│ │ │ │ │ └── usage.astro
│ │ │ │ └── index.astro
│ │ │ ├── slider
│ │ │ │ ├── _sections
│ │ │ │ │ └── usage.astro
│ │ │ │ └── index.astro
│ │ │ ├── spinner
│ │ │ │ ├── _sections
│ │ │ │ │ ├── sizes.astro
│ │ │ │ │ ├── usage.astro
│ │ │ │ │ └── variants.astro
│ │ │ │ └── index.astro
│ │ │ ├── svg
│ │ │ │ ├── _sections
│ │ │ │ │ ├── sizes.astro
│ │ │ │ │ ├── usage.astro
│ │ │ │ │ └── variants.astro
│ │ │ │ └── index.astro
│ │ │ ├── table
│ │ │ │ ├── _column-config.json
│ │ │ │ ├── _data-source.json
│ │ │ │ ├── _sections
│ │ │ │ │ ├── empty.html
│ │ │ │ │ └── usage.astro
│ │ │ │ └── index.astro
│ │ │ ├── tabs
│ │ │ │ ├── _sections
│ │ │ │ │ ├── Contained.astro
│ │ │ │ │ ├── Icons.astro
│ │ │ │ │ └── usage.astro
│ │ │ │ └── index.astro
│ │ │ ├── tag
│ │ │ │ ├── _sections
│ │ │ │ │ └── usage.astro
│ │ │ │ └── index.astro
│ │ │ ├── text
│ │ │ │ ├── _sections
│ │ │ │ │ ├── body-styles.astro
│ │ │ │ │ ├── color-variants.astro
│ │ │ │ │ ├── fixed-heading-styles.astro
│ │ │ │ │ ├── fluid-heading-styles.astro
│ │ │ │ │ └── utility-styles.astro
│ │ │ │ └── index.astro
│ │ │ ├── textarea
│ │ │ │ ├── _sections
│ │ │ │ │ ├── disabled.html
│ │ │ │ │ ├── events.astro
│ │ │ │ │ ├── states.astro
│ │ │ │ │ └── usage.astro
│ │ │ │ └── index.astro
│ │ │ ├── time-picker
│ │ │ │ ├── _sections
│ │ │ │ │ ├── disabled.astro
│ │ │ │ │ ├── events.astro
│ │ │ │ │ ├── sizes.astro
│ │ │ │ │ └── usage.astro
│ │ │ │ └── index.astro
│ │ │ ├── toggle
│ │ │ │ ├── _sections
│ │ │ │ │ ├── events.astro
│ │ │ │ │ ├── sizes.astro
│ │ │ │ │ ├── states.astro
│ │ │ │ │ └── usage.astro
│ │ │ │ └── index.astro
│ │ │ ├── tooltip
│ │ │ │ ├── _sections
│ │ │ │ │ ├── Shared.astro
│ │ │ │ │ └── Usage.astro
│ │ │ │ └── index.astro
│ │ │ ├── tree-view
│ │ │ │ ├── _sections
│ │ │ │ │ ├── events.astro
│ │ │ │ │ └── usage.astro
│ │ │ │ └── index.astro
│ │ │ └── url-input
│ │ │ │ ├── _sections
│ │ │ │ ├── events.astro
│ │ │ │ ├── sizes.astro
│ │ │ │ ├── slots.astro
│ │ │ │ ├── states.astro
│ │ │ │ └── usage.astro
│ │ │ │ └── index.astro
│ │ ├── index.astro
│ │ ├── license.astro
│ │ ├── privacy.astro
│ │ ├── test.astro
│ │ └── theme-creator.astro
│ └── styles
│ │ ├── base.layout.scss
│ │ ├── blog.scss
│ │ ├── component.layout.scss
│ │ ├── components.page.scss
│ │ ├── device-utils.scss
│ │ ├── index.page.scss
│ │ ├── mixin.scss
│ │ └── post.scss
└── tsconfig.json
├── bin
├── clean-branches.sh
└── pull-carbon-deps.ts
├── env.js
├── package-lock.json
├── package.json
├── qodana.yaml
├── readme.md
├── releaseToDocs.js
├── research
├── Screenshot 2022-08-03 084633.png
├── loader.html
└── quote.svg
├── robots.txt
├── src
├── 3d-party
│ ├── d3js
│ │ └── index.tsx
│ ├── monaco
│ │ ├── editor.main.scss
│ │ └── index.tsx
│ └── prism
│ │ ├── index.tsx
│ │ ├── prism-line-numbers.scss
│ │ └── prism.scss
├── assets
│ ├── images
│ │ └── empty-state
│ │ │ ├── no-document.svg
│ │ │ ├── page.svg
│ │ │ └── search.svg
│ ├── package-lock.json
│ ├── package.json
│ └── styles
│ │ ├── theme.css
│ │ └── theme.css.map
├── components.d.ts
├── components
│ ├── accordion
│ │ ├── accordion-item
│ │ │ ├── accordion-item.scss
│ │ │ ├── accordion-item.tsx
│ │ │ └── readme.md
│ │ └── accordion
│ │ │ ├── accordion.scss
│ │ │ ├── accordion.tsx
│ │ │ └── readme.md
│ ├── application
│ │ ├── calendar
│ │ │ └── calendar
│ │ │ │ ├── CalendarEvent.tsx
│ │ │ │ ├── calendar.scss
│ │ │ │ ├── calendar.tsx
│ │ │ │ ├── column-view
│ │ │ │ ├── ColumnEventManager.tsx
│ │ │ │ ├── column-view-background
│ │ │ │ │ ├── column-view-background.scss
│ │ │ │ │ ├── column-view-background.tsx
│ │ │ │ │ └── readme.md
│ │ │ │ ├── column-view.scss
│ │ │ │ ├── column-view.tsx
│ │ │ │ ├── readme.md
│ │ │ │ └── utils.tsx
│ │ │ │ ├── demo.data.ts
│ │ │ │ ├── event-management
│ │ │ │ ├── BaseEvent.tsx
│ │ │ │ └── EventManager.tsx
│ │ │ │ ├── month-view
│ │ │ │ ├── MonthEventManager.tsx
│ │ │ │ ├── month-view-background
│ │ │ │ │ ├── month-view-background.scss
│ │ │ │ │ ├── month-view-background.tsx
│ │ │ │ │ └── readme.md
│ │ │ │ ├── month-view.scss
│ │ │ │ ├── month-view.tsx
│ │ │ │ ├── readme.md
│ │ │ │ └── utils.tsx
│ │ │ │ ├── readme.md
│ │ │ │ ├── types.tsx
│ │ │ │ └── utils.tsx
│ │ ├── code-highlighter
│ │ │ ├── code-highlighter.scss
│ │ │ ├── code-highlighter.tsx
│ │ │ ├── constants.ts
│ │ │ └── readme.md
│ │ ├── condition-builder
│ │ │ ├── cb-compound-expression
│ │ │ │ ├── cb-compound-expression.scss
│ │ │ │ ├── cb-compound-expression.tsx
│ │ │ │ └── readme.md
│ │ │ ├── cb-divider
│ │ │ │ ├── cb-divider.scss
│ │ │ │ ├── cb-divider.tsx
│ │ │ │ └── readme.md
│ │ │ ├── cb-expression
│ │ │ │ ├── cb-expression.scss
│ │ │ │ ├── cb-expression.tsx
│ │ │ │ └── readme.md
│ │ │ ├── cb-predicate
│ │ │ │ ├── cb-predicate.scss
│ │ │ │ ├── cb-predicate.tsx
│ │ │ │ └── readme.md
│ │ │ └── condition-builder
│ │ │ │ ├── condition-builder.scss
│ │ │ │ ├── condition-builder.tsx
│ │ │ │ └── readme.md
│ │ ├── current-time
│ │ │ ├── current-time.scss
│ │ │ ├── current-time.spec.tsx
│ │ │ ├── current-time.tsx
│ │ │ └── readme.md
│ │ ├── empty-state
│ │ │ ├── empty-state.scss
│ │ │ ├── empty-state.tsx
│ │ │ └── readme.md
│ │ ├── flow-designer
│ │ │ ├── canvas
│ │ │ │ ├── canvas.scss
│ │ │ │ ├── canvas.tsx
│ │ │ │ └── readme.md
│ │ │ └── flow-designer
│ │ │ │ ├── flow-designer.scss
│ │ │ │ ├── flow-designer.tsx
│ │ │ │ └── readme.md
│ │ ├── footer
│ │ │ ├── footer-copyright
│ │ │ │ ├── footer-copyright.scss
│ │ │ │ ├── footer-copyright.tsx
│ │ │ │ └── readme.md
│ │ │ ├── footer-links
│ │ │ │ ├── footer-links.scss
│ │ │ │ ├── footer-links.tsx
│ │ │ │ └── readme.md
│ │ │ └── footer
│ │ │ │ ├── footer.scss
│ │ │ │ ├── footer.tsx
│ │ │ │ └── readme.md
│ │ ├── header
│ │ │ ├── header-action
│ │ │ │ ├── header-action.scss
│ │ │ │ ├── header-action.tsx
│ │ │ │ └── readme.md
│ │ │ ├── header-brand
│ │ │ │ ├── header-brand.scss
│ │ │ │ ├── header-brand.tsx
│ │ │ │ └── readme.md
│ │ │ └── header
│ │ │ │ ├── header.scss
│ │ │ │ ├── header.tsx
│ │ │ │ └── readme.md
│ │ ├── sidenav-menu-item
│ │ │ ├── readme.md
│ │ │ ├── sidenav-menu-item.scss
│ │ │ └── sidenav-menu-item.tsx
│ │ ├── sidenav-menu
│ │ │ ├── readme.md
│ │ │ ├── sidenav-menu.scss
│ │ │ └── sidenav-menu.tsx
│ │ └── sidenav
│ │ │ ├── readme.md
│ │ │ ├── sidenav.scss
│ │ │ └── sidenav.tsx
│ ├── avatar
│ │ ├── avatar.scss
│ │ ├── avatar.tsx
│ │ └── readme.md
│ ├── badge
│ │ ├── badge.scss
│ │ ├── badge.tsx
│ │ └── readme.md
│ ├── breadcrumb
│ │ ├── breadcrumb-item
│ │ │ ├── breadcrumb-item.scss
│ │ │ ├── breadcrumb-item.tsx
│ │ │ └── readme.md
│ │ ├── breadcrumb.scss
│ │ ├── breadcrumb.tsx
│ │ └── readme.md
│ ├── button
│ │ ├── button-group
│ │ │ ├── button-group.scss
│ │ │ ├── button-group.tsx
│ │ │ └── readme.md
│ │ └── button
│ │ │ ├── button.scss
│ │ │ ├── button.spec.tsx
│ │ │ ├── button.tsx
│ │ │ └── readme.md
│ ├── card
│ │ ├── card.scss
│ │ ├── card.tsx
│ │ └── readme.md
│ ├── charts
│ │ ├── chart-colors.ts
│ │ ├── chart-doughnut
│ │ │ ├── chart-doughnut.scss
│ │ │ ├── chart-doughnut.tsx
│ │ │ └── readme.md
│ │ ├── chart-pie
│ │ │ ├── chart-pie.scss
│ │ │ ├── chart-pie.tsx
│ │ │ └── readme.md
│ │ └── pie
│ │ │ ├── pie.scss
│ │ │ └── pie.ts
│ ├── container
│ │ ├── container.scss
│ │ ├── container.tsx
│ │ └── readme.md
│ ├── divider
│ │ ├── divider.scss
│ │ ├── divider.tsx
│ │ └── readme.md
│ ├── dropdown
│ │ ├── dropdown-menu
│ │ │ ├── dropdown-menu.scss
│ │ │ ├── dropdown-menu.tsx
│ │ │ └── readme.md
│ │ └── dropdown
│ │ │ ├── dropdown.scss
│ │ │ ├── dropdown.tsx
│ │ │ └── readme.md
│ ├── icon
│ │ ├── constants.ts
│ │ ├── datasource.ts
│ │ ├── icon.scss
│ │ ├── icon.tsx
│ │ ├── icons.ts
│ │ └── readme.md
│ ├── image
│ │ ├── image.scss
│ │ ├── image.tsx
│ │ └── readme.md
│ ├── input-controls
│ │ ├── checkbox
│ │ │ ├── checkbox.scss
│ │ │ ├── checkbox.tsx
│ │ │ └── readme.md
│ │ ├── code-editor
│ │ │ ├── code-editor.scss
│ │ │ ├── code-editor.tsx
│ │ │ └── readme.md
│ │ ├── common-input.scss
│ │ ├── data-and-time
│ │ │ └── date
│ │ │ │ ├── date-picker
│ │ │ │ ├── date-picker.scss
│ │ │ │ ├── date-picker.tsx
│ │ │ │ └── readme.md
│ │ │ │ └── time-picker
│ │ │ │ ├── readme.md
│ │ │ │ ├── time-picker.scss
│ │ │ │ └── time-picker.tsx
│ │ ├── form-control
│ │ │ ├── form-control.scss
│ │ │ ├── form-control.tsx
│ │ │ └── readme.md
│ │ ├── html-editor
│ │ │ ├── html-editor.scss
│ │ │ ├── html-editor.tsx
│ │ │ └── readme.md
│ │ ├── input.interface.tsx
│ │ ├── input
│ │ │ ├── input
│ │ │ │ ├── input.scss
│ │ │ │ ├── input.tsx
│ │ │ │ └── readme.md
│ │ │ ├── number
│ │ │ │ ├── number.scss
│ │ │ │ ├── number.tsx
│ │ │ │ └── readme.md
│ │ │ └── textarea
│ │ │ │ ├── readme.md
│ │ │ │ ├── textarea.scss
│ │ │ │ └── textarea.tsx
│ │ ├── select
│ │ │ ├── readme.md
│ │ │ ├── select.scss
│ │ │ └── select.tsx
│ │ ├── slider
│ │ │ ├── readme.md
│ │ │ ├── slider.scss
│ │ │ └── slider.tsx
│ │ └── toggle
│ │ │ ├── readme.md
│ │ │ ├── toggle.scss
│ │ │ └── toggle.tsx
│ ├── link
│ │ ├── link.scss
│ │ ├── link.tsx
│ │ └── readme.md
│ ├── menu
│ │ ├── menu-divider
│ │ │ ├── menu-divider.scss
│ │ │ ├── menu-divider.tsx
│ │ │ └── readme.md
│ │ ├── menu-item
│ │ │ ├── menu-item.scss
│ │ │ ├── menu-item.tsx
│ │ │ └── readme.md
│ │ └── menu
│ │ │ ├── menu.scss
│ │ │ ├── menu.tsx
│ │ │ └── readme.md
│ ├── modal
│ │ ├── modal-content
│ │ │ ├── modal-content.scss
│ │ │ ├── modal-content.tsx
│ │ │ └── readme.md
│ │ └── modal
│ │ │ ├── modal.scss
│ │ │ ├── modal.tsx
│ │ │ └── readme.md
│ ├── notification-manager
│ │ ├── notification-manager.scss
│ │ ├── notification-manager.tsx
│ │ └── readme.md
│ ├── notification
│ │ ├── notification.scss
│ │ ├── notification.tsx
│ │ └── readme.md
│ ├── popover
│ │ ├── popover-content
│ │ │ ├── popover-content.scss
│ │ │ ├── popover-content.tsx
│ │ │ └── readme.md
│ │ ├── popover
│ │ │ ├── PopoverController.tsx
│ │ │ ├── popover.scss
│ │ │ ├── popover.tsx
│ │ │ └── readme.md
│ │ └── types.tsx
│ ├── progress
│ │ ├── progress.scss
│ │ ├── progress.tsx
│ │ └── readme.md
│ ├── spinner
│ │ ├── readme.md
│ │ ├── spinner.scss
│ │ └── spinner.tsx
│ ├── svg
│ │ ├── datasource.ts
│ │ ├── readme.md
│ │ ├── svg.scss
│ │ └── svg.tsx
│ ├── table
│ │ ├── readme.md
│ │ ├── table.scss
│ │ └── table.tsx
│ ├── tabs
│ │ ├── tab-panel
│ │ │ ├── readme.md
│ │ │ ├── tab-panel.scss
│ │ │ └── tab-panel.tsx
│ │ ├── tab
│ │ │ ├── readme.md
│ │ │ ├── tab.scss
│ │ │ └── tab.tsx
│ │ ├── tabs-list
│ │ │ ├── readme.md
│ │ │ ├── tabs-list.scss
│ │ │ └── tabs-list.tsx
│ │ └── tabs
│ │ │ ├── readme.md
│ │ │ ├── tabs.scss
│ │ │ └── tabs.tsx
│ ├── tag
│ │ ├── readme.md
│ │ ├── tag.scss
│ │ └── tag.tsx
│ ├── tooltip
│ │ ├── readme.md
│ │ ├── tooltip.scss
│ │ └── tooltip.tsx
│ ├── tree-view
│ │ ├── tree-node
│ │ │ ├── readme.md
│ │ │ ├── tree-node.scss
│ │ │ └── tree-node.tsx
│ │ └── tree-view
│ │ │ ├── readme.md
│ │ │ ├── tree-view.scss
│ │ │ └── tree-view.tsx
│ ├── typography
│ │ └── text
│ │ │ ├── readme.md
│ │ │ ├── text.scss
│ │ │ └── text.tsx
│ └── url-input
│ │ ├── readme.md
│ │ ├── url-input.scss
│ │ └── url-input.tsx
├── globalStyles
│ ├── commons.scss
│ ├── functions.scss
│ ├── mixins.scss
│ └── theme
│ │ ├── css-variables.scss
│ │ ├── theme.scss
│ │ └── tokens
│ │ ├── _breakpoints.scss
│ │ ├── _common.scss
│ │ ├── _shadow.scss
│ │ ├── _spacing.scss
│ │ ├── _typography.scss
│ │ └── color
│ │ ├── background-colors.scss
│ │ ├── base.scss
│ │ ├── border-colors.scss
│ │ ├── field-colors.scss
│ │ ├── icon-colors.scss
│ │ ├── index.scss
│ │ ├── layer-colors.scss
│ │ ├── skeleton-colors.scss
│ │ └── text-colors.scss
├── index.html
├── index.ts
└── utils
│ ├── constants.ts
│ └── utils.tsx
├── stencil.config.ts
└── tsconfig.json
/.editorconfig:
--------------------------------------------------------------------------------
1 | # http://editorconfig.org
2 |
3 | root = true
4 |
5 | [*]
6 | charset = utf-8
7 | indent_style = space
8 | indent_size = 2
9 | end_of_line = lf
10 | insert_final_newline = true
11 | trim_trailing_whitespace = true
12 |
13 | [*.md]
14 | insert_final_newline = false
15 | trim_trailing_whitespace = false
16 |
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | github: [shivajivarma]
2 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Describe the bug**
11 | A clear and concise description of what the bug is.
12 |
13 | **To Reproduce**
14 | Steps to reproduce the behavior:
15 | 1. Go to '...'
16 | 2. Click on '....'
17 | 3. Scroll down to '....'
18 | 4. See error
19 |
20 | **Expected behavior**
21 | A clear and concise description of what you expected to happen.
22 |
23 | **Screenshots**
24 | If applicable, add screenshots to help explain your problem.
25 |
26 | **Desktop (please complete the following information):**
27 | - OS: [e.g. iOS]
28 | - Browser [e.g. chrome, safari]
29 | - Version [e.g. 22]
30 |
31 | **Smartphone (please complete the following information):**
32 | - Device: [e.g. iPhone6]
33 | - OS: [e.g. iOS8.1]
34 | - Browser [e.g. stock browser, safari]
35 | - Version [e.g. 22]
36 |
37 | **Additional context**
38 | Add any other context about the problem here.
39 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Is your feature request related to a problem? Please describe.**
11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12 |
13 | **Describe the solution you'd like**
14 | A clear and concise description of what you want to happen.
15 |
16 | **Describe alternatives you've considered**
17 | A clear and concise description of any alternative solutions or features you've considered.
18 |
19 | **Additional context**
20 | Add any other context or screenshots about the feature request here.
21 |
--------------------------------------------------------------------------------
/.github/workflows/build.yml:
--------------------------------------------------------------------------------
1 | name: Build
2 |
3 | on:
4 | push:
5 | # Sequence of patterns matched against refs/heads
6 | branches:
7 | - main
8 | - 'releases/**'
9 |
10 | jobs:
11 | build:
12 |
13 | runs-on: ubuntu-latest
14 |
15 | strategy:
16 | matrix:
17 | node-version: [18.x]
18 |
19 | steps:
20 | - uses: actions/checkout@v1
21 | - name: Use Node.js ${{ matrix.node-version }}
22 | uses: actions/setup-node@v1
23 | with:
24 | node-version: ${{ matrix.node-version }}
25 |
26 | - name: Cache node modules
27 | uses: actions/cache@v3
28 | with:
29 | path: node_modules
30 | key: node_modules-${{hashFiles('package-lock.json')}}
31 | restore-keys: node_modules- # Take any latest cache if failed to find it for current yarn.lock
32 |
33 | - name: npm install, build, and test
34 | run: |
35 | npm ci
36 | npm run build --if-present
37 | env:
38 | CI: true
39 |
40 | - id: publish
41 | uses: JS-DevTools/npm-publish@v1
42 | with:
43 | token: ${{ secrets.NPM_TOKEN }}
44 |
--------------------------------------------------------------------------------
/.github/workflows/deploy-website.yml:
--------------------------------------------------------------------------------
1 | name: Deploy website
2 |
3 | on:
4 | workflow_dispatch:
5 |
6 | jobs:
7 | build:
8 |
9 | runs-on: ubuntu-latest
10 |
11 | steps:
12 | - name: Testing ssh
13 | run: |
14 | echo "Hello world"
15 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | dist/
2 | www/
3 | loader/
4 | docs/assets/goatui-dev/
5 |
6 | *~
7 | *.sw[mnpcod]
8 | *.log
9 | *.lock
10 | *.tmp
11 | *.tmp.*
12 | log.txt
13 | *.sublime-project
14 | *.sublime-workspace
15 |
16 | .stencil/
17 | .idea/
18 | .vscode/
19 | .sass-cache/
20 | .versions/
21 | node_modules/
22 | $RECYCLE.BIN/
23 |
24 | .DS_Store
25 | Thumbs.db
26 | UserInterfaceState.xcuserstate
27 | .env
28 |
--------------------------------------------------------------------------------
/.prettierrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "arrowParens": "avoid",
3 | "bracketSpacing": true,
4 | "jsxBracketSameLine": false,
5 | "jsxSingleQuote": false,
6 | "quoteProps": "consistent",
7 | "semi": true,
8 | "singleQuote": true,
9 | "tabWidth": 2,
10 | "trailingComma": "all",
11 | "useTabs": false
12 | }
13 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2024 SHIVAJI VARMA
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/astro-docs/.editorconfig:
--------------------------------------------------------------------------------
1 | # http://editorconfig.org
2 |
3 | root = true
4 |
5 | [*]
6 | charset = utf-8
7 | indent_style = space
8 | indent_size = 2
9 | end_of_line = lf
10 | insert_final_newline = true
11 | trim_trailing_whitespace = true
12 |
13 | [*.md]
14 | insert_final_newline = false
15 | trim_trailing_whitespace = false
16 |
--------------------------------------------------------------------------------
/astro-docs/.gitignore:
--------------------------------------------------------------------------------
1 | # build output
2 | dist/
3 |
4 | # generated types
5 | .astro/
6 |
7 | # dependencies
8 | node_modules/
9 |
10 | # logs
11 | npm-debug.log*
12 | yarn-debug.log*
13 | yarn-error.log*
14 | pnpm-debug.log*
15 |
16 | # environment variables
17 | .env
18 | .env.production
19 |
20 | # macOS-specific files
21 | .DS_Store
22 |
23 | public/assets/goatui-dev/
24 |
--------------------------------------------------------------------------------
/astro-docs/.prettierrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "arrowParens": "avoid",
3 | "bracketSpacing": true,
4 | "jsxBracketSameLine": false,
5 | "jsxSingleQuote": false,
6 | "quoteProps": "consistent",
7 | "printWidth": 180,
8 | "semi": true,
9 | "singleQuote": true,
10 | "tabWidth": 2,
11 | "trailingComma": "all",
12 | "useTabs": false
13 | }
14 |
--------------------------------------------------------------------------------
/astro-docs/astro.config.mjs:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'astro/config';
2 | import sitemap from '@astrojs/sitemap';
3 | import mdx from '@astrojs/mdx';
4 |
5 | // https://astro.build/config
6 | export default defineConfig({
7 | devToolbar: { enabled: false },
8 | site: 'https://goatui.com',
9 | compressHTML: false,
10 | server: { port: 4000, host: true },
11 | integrations: [sitemap(), mdx()],
12 | },
13 | );
14 |
--------------------------------------------------------------------------------
/astro-docs/bin/convert-to-webp.ts:
--------------------------------------------------------------------------------
1 | import * as sharp from 'npm:sharp@0.33.4';
2 | import { walkSync } from 'https://deno.land/std@0.193.0/fs/mod.ts';
3 |
4 | for (const file of walkSync('../public/assets/img', {
5 | maxDepth: 1,
6 | includeDirs: false,
7 | exts: ['.png'],
8 | })) {
9 | sharp.default(file.path).toFile(file.path.replace('.png', '.webp'), (err, info) => {
10 | console.log(err, info);
11 | });
12 | }
13 |
14 | /**
15 | * ```cmd
16 | * deno run -A convert-to-webp.ts
17 | * ```
18 | */
19 |
--------------------------------------------------------------------------------
/astro-docs/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "goatui-docs",
3 | "type": "module",
4 | "version": "1.0.0",
5 | "scripts": {
6 | "dev": "astro dev",
7 | "start": "astro dev",
8 | "build": "astro build --logLevel error",
9 | "preview": "astro preview",
10 | "astro": "astro"
11 | },
12 | "dependencies": {
13 | "@astrojs/check": "^0.7.0",
14 | "@astrojs/sitemap": "^3.1.5",
15 | "@astrojs/mdx": "^3.1.0",
16 | "astro": "^4.9.2",
17 | "sass": "^1.77.4",
18 | "typescript": "^5.4.5"
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/astro-docs/public/ads.txt:
--------------------------------------------------------------------------------
1 | google.com, pub-3120721550776061, DIRECT, f08c47fec0942fa0
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/accordion-dark.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/accordion-dark.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/accordion.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/accordion.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/avatar.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/avatar.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/avatar.xs.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/avatar.xs.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/calendar-dark.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/calendar-dark.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/calendar.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/calendar.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/canvas.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/canvas.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/chart-doughnut-dark.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/chart-doughnut-dark.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/chart-doughnut.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/chart-doughnut.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/chart-pie-dark.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/chart-pie-dark.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/chart-pie.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/chart-pie.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/code-editor-dark.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/code-editor-dark.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/code-editor.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/code-editor.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/code-highlighter-dark.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/code-highlighter-dark.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/code-highlighter.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/code-highlighter.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/condition-builder.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/condition-builder.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/dropdown-dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/dropdown-dark.png
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/dropdown-dark.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/dropdown-dark.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/dropdown.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/dropdown.png
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/dropdown.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/dropdown.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/empty-state-dark.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/empty-state-dark.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/empty-state.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/empty-state.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/flow-designer.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/flow-designer.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/footer-dark.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/footer-dark.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/footer.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/footer.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/header-dark.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/header-dark.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/header.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/header.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/html-editor-dark.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/html-editor-dark.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/html-editor.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/html-editor.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/image-not-found.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/image-not-found.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/list.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/list.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/logo.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/menu-dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/menu-dark.png
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/menu-dark.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/menu-dark.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/menu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/menu.png
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/menu.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/menu.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/modal-dark.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/modal-dark.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/modal.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/modal.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/modals/modal-basic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/modals/modal-basic.png
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/modals/modal-large.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/modals/modal-large.png
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/modals/modal-long.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/modals/modal-long.png
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/modals/modal-small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/modals/modal-small.png
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/modals/modal-vertically-centered.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/modals/modal-vertically-centered.png
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/no-image.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/no-image.jpg
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/notification-manager-dark.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/notification-manager-dark.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/notification-manager.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/notification-manager.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/popovers/popover-bottom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/popovers/popover-bottom.png
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/popovers/popover-left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/popovers/popover-left.png
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/popovers/popover-right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/popovers/popover-right.png
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/popovers/popover-top.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/popovers/popover-top.png
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/select-dark.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/select-dark.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/select.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/select.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/slider-dark.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/slider-dark.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/slider.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/slider.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/social-logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/social-logo.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/table-dark.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/table-dark.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/table.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/table.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/tooltip-dark.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/tooltip-dark.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/tooltip.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/tooltip.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/tooltips/tooltip-bottom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/tooltips/tooltip-bottom.png
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/tooltips/tooltip-left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/tooltips/tooltip-left.png
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/tooltips/tooltip-right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/tooltips/tooltip-right.png
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/tooltips/tooltip-top.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/tooltips/tooltip-top.png
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/tree-view-dark.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/tree-view-dark.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/tree-view.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/tree-view.webp
--------------------------------------------------------------------------------
/astro-docs/public/assets/img/twitter.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/astro-docs/public/assets/img/twitter.webp
--------------------------------------------------------------------------------
/astro-docs/public/favicon.svg:
--------------------------------------------------------------------------------
1 |
10 |
--------------------------------------------------------------------------------
/astro-docs/public/humans.txt:
--------------------------------------------------------------------------------
1 | ____ __ __ __
2 | /\ _`\ /\ \ __ __ __ /\ \/\ \
3 | \ \,\L\_\ \ \___ /\_\ __ __ __ /\_\/\_\ \ \ \ \ \ __ _ __ ___ ___ __
4 | \/_\__ \\ \ _ `\/\ \/\ \/\ \ /'__`\ \/\ \/\ \ \ \ \ \ \ /'__`\ /\`'__\/' __` __`\ /'__`\
5 | /\ \L\ \ \ \ \ \ \ \ \ \_/ |/\ \L\.\_ \ \ \ \ \ \ \ \_/ \/\ \L\.\_\ \ \/ /\ \/\ \/\ \/\ \L\.\_
6 | \ `\____\ \_\ \_\ \_\ \___/ \ \__/.\_\_\ \ \ \_\ \ `\___/\ \__/.\_\\ \_\ \ \_\ \_\ \_\ \__/.\_\
7 | \/_____/\/_/\/_/\/_/\/__/ \/__/\/_/\ \_\ \/_/ `\/__/ \/__/\/_/ \/_/ \/_/\/_/\/_/\/__/\/_/
8 | \ \____/
9 | \/___/
10 |
--------------------------------------------------------------------------------
/astro-docs/public/robots-beta.txt:
--------------------------------------------------------------------------------
1 | User-agent: *
2 | Disallow: /
3 |
--------------------------------------------------------------------------------
/astro-docs/public/robots.txt:
--------------------------------------------------------------------------------
1 | User-agent: *
2 | Allow: /
3 | Sitemap: https://goatui.com/sitemap-index.xml
4 |
--------------------------------------------------------------------------------
/astro-docs/src/components/Footer.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import site from '../_data/site.json';
3 | ---
4 |
5 |
7 |
8 |
17 |
18 |
--------------------------------------------------------------------------------
/astro-docs/src/components/Highlighter.astro:
--------------------------------------------------------------------------------
1 | ---
2 | interface Props {
3 | format?: boolean;
4 | lang: any;
5 | }
6 |
7 | const {lang, format} = Astro.props;
8 |
9 | let html = '';
10 | if (Astro.slots.has('default')) {
11 | html = await Astro.slots.render('default');
12 | html = html.replaceAll('', '</script>');
13 | }
14 | ---
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/astro-docs/src/components/HighlighterCard.astro:
--------------------------------------------------------------------------------
1 | ---
2 | interface Props {
3 | cssClasses?: string;
4 | lang: any;
5 | }
6 |
7 | const { lang, cssClasses } = Astro.props;
8 |
9 | let html = '';
10 | if (Astro.slots.has('default')) {
11 | html = await Astro.slots.render('default');
12 | html = html.replaceAll('<', '<');
13 | html = html.replaceAll('', '</script>');
14 | }
15 | ---
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/astro-docs/src/components/OverviewPanel.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import ComponentSectionNav from './ComponentSectionNav.astro';
3 | interface Props {
4 | componentDetails: any;
5 | sections: any;
6 | }
7 |
8 | const { componentDetails, sections } = Astro.props;
9 | ---
10 |
11 |
12 |
13 |
14 |
15 |
16 | {
17 | sections.map((section) => (
18 |
20 | {section.title}
21 |
22 |
23 |
))
24 | }
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/astro-docs/src/env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/404.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Layout from '../layouts/Base.astro';
3 | ---
4 |
5 |
9 |
10 |
11 |
17 |
18 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/blog/posts/2023-08-03-whats-up-nerds.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Layout from '../../../layouts/Post.astro';
3 | import '../../../styles/post.scss';
4 | export const title = 'What\'s up nerds?';
5 | export const description = 'Welcome one and all to the new, official GOATUI blog. From now on, I will be posting info on new releases, documentation changes, great examples of folks using GOATUI, and more. Stay tuned for our first post on the next two updates for the project.';
6 | export const publishedDate = "2023-08-03";
7 | ---
8 |
9 |
10 | {description}
11 |
12 |
13 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/blog/posts/2023-08-04-goatui-first-release.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Layout from '../../../layouts/Post.astro';
3 | import '../../../styles/post.scss';
4 | export const title = 'GOATUI 1.0';
5 | export const description = `Hi all! 👋 We are goatui, a collective of open source and web component enthusiasts. We consider it our goal to empower everyone with a powerful and battle-tested setup for creating and sharing open source customizable web components.`;
6 | export const publishedDate = "2023-08-03";
7 | ---
8 |
9 |
10 | { description }
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/accordion-item/index.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Layout from '../../../layouts/Component.astro';
3 | import { getComponentDetails } from '../../../_data/getComponentDetails.ts';
4 | import ApiPanel from '../../../components/ApiPanel.astro';
5 | const componentDetails = getComponentDetails('goat-accordion-item');
6 | ---
7 |
8 |
9 |
10 | API
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/avatar/_sections/Sizes.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/avatar/_sections/Usage.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/badge/_sections/Examples.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/badge/_sections/Usage.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/breadcrumb/_sections/Usage.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 |
5 |
6 | Home
7 | Page
8 |
9 |
10 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/breadcrumb/index.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Layout from '../../../layouts/Component.astro';
3 | import { getComponentDetails } from '../../../_data/getComponentDetails.ts';
4 | import ApiPanel from '../../../components/ApiPanel.astro';
5 | const componentDetails = getComponentDetails('goat-breadcrumb');
6 |
7 | import UsageSection from './_sections/Usage.astro';
8 | import OverviewPanel from '../../../components/OverviewPanel.astro';
9 |
10 | const sections = [
11 | {
12 | 'title': 'Usage',
13 | 'Component': UsageSection,
14 | }];
15 | ---
16 |
17 |
18 |
19 | Overview
20 | Playground
21 | API
22 |
23 |
24 |
25 |
26 |
27 | Work in progress
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/button-group/index.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Layout from '../../../layouts/Component.astro';
3 | import { getComponentDetails } from '../../../_data/getComponentDetails.ts';
4 | import ApiPanel from '../../../components/ApiPanel.astro';
5 | const componentDetails = getComponentDetails('goat-button-group');
6 |
7 | import UsageSection from './_sections/Usage.astro';
8 | import OverviewPanel from '../../../components/OverviewPanel.astro';
9 |
10 | const sections = [
11 | {
12 | 'title': 'Usage',
13 | 'Component': UsageSection,
14 | }];
15 | ---
16 |
17 |
18 |
19 | Overview
20 | Playground
21 | API
22 |
23 |
24 |
25 |
26 |
27 | Work in progress
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/button/_sections/Events.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | import Highlighter from '../../../../components/Highlighter.astro';
4 | ---
5 |
6 | Click me
7 | Disabled Button
8 |
9 |
17 |
18 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/button/_sections/Icon.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 |
5 |
6 |
7 | Add
8 |
9 | Previous
10 | Next
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/button/_sections/Kind.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 |
5 |
6 | Default long button
7 |
8 |
9 | Simple text button
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/button/_sections/Sizes.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 | Fancy larger or smaller buttons? Add size attribute for additional sizes.
5 |
6 |
7 | Small
8 | Medium
9 | Large
10 | XL Button
11 | 2XL Button
12 |
13 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/button/_sections/Variants.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 |
5 | Here are several predefined button styles, each serving its own semantic purpose.
6 |
7 |
8 | Mix and match the `variant` and `sub-variant` to create a variety of buttons.
9 | `"simple"` is a simple button without default padding at end.
10 | `"block"` is a full-width button that spans the full width of its container.
11 |
12 |
13 |
14 | Default
15 |
16 | Light
17 |
18 | Outline
19 |
20 | Ghost
21 |
22 | Neo-Brutalism
23 |
24 |
25 |
26 |
27 |
28 |
29 | Light & Simple
30 |
31 |
32 |
33 | Default & Block
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/canvas/_sections/Usage.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 |
5 |
6 |
7 |
27 |
28 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/canvas/index.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Layout from '../../../layouts/Component.astro';
3 | import { getComponentDetails } from '../../../_data/getComponentDetails.ts';
4 | import ApiPanel from '../../../components/ApiPanel.astro';
5 | const componentDetails = getComponentDetails('goat-canvas');
6 |
7 | import UsageSection from './_sections/Usage.astro';
8 | import OverviewPanel from '../../../components/OverviewPanel.astro';
9 |
10 | const sections = [
11 | {
12 | 'title': 'Usage',
13 | 'Component': UsageSection,
14 | }];
15 | ---
16 |
17 |
18 |
19 | Overview
20 | Playground
21 | API
22 |
23 |
24 |
25 |
26 |
27 | Work in progress
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/chart-doughnut/index.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Layout from '../../../layouts/Component.astro';
3 | import { getComponentDetails } from '../../../_data/getComponentDetails.ts';
4 | import ApiPanel from '../../../components/ApiPanel.astro';
5 | const componentDetails = getComponentDetails('goat-chart-doughnut');
6 |
7 | import UsageSection from './_sections/Usage.astro';
8 | import OverviewPanel from '../../../components/OverviewPanel.astro';
9 |
10 | const sections = [
11 | {
12 | 'title': 'Usage',
13 | 'Component': UsageSection,
14 | }];
15 | ---
16 |
17 |
18 |
19 | Overview
20 | Playground
21 | API
22 |
23 |
24 |
25 |
26 |
27 | Work in progress
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/chart-pie/_sections/Usage.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 |
5 |
6 | Randomize
7 |
8 |
9 |
10 |
11 |
12 |
33 |
34 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/chart-pie/index.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Layout from '../../../layouts/Component.astro';
3 | import { getComponentDetails } from '../../../_data/getComponentDetails.ts';
4 | import ApiPanel from '../../../components/ApiPanel.astro';
5 | const componentDetails = getComponentDetails('goat-chart-pie');
6 |
7 | import UsageSection from './_sections/Usage.astro';
8 | import OverviewPanel from '../../../components/OverviewPanel.astro';
9 |
10 | const sections = [
11 | {
12 | 'title': 'Usage',
13 | 'Component': UsageSection,
14 | }];
15 | ---
16 |
17 |
18 |
19 | Overview
20 | Playground
21 | API
22 |
23 |
24 |
25 |
26 |
27 | Work in progress
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/checkbox/_sections/Disabled.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 | Make input look inactive by adding the disabled boolean
6 | attribute to any
7 | <input>
element.
8 |
10 |
11 |
12 | Disabled checkbox
13 | Disabled checkbox
14 |
15 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/checkbox/_sections/Events.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Highlighter from '../../../../components/Highlighter.astro';
3 | ---
4 | On change of checkbox value a CustomEvent goat:change
is triggered by
6 | the element.
7 |
8 |
9 |
10 |
11 | Change Event?
12 |
17 |
18 |
19 |
20 |
21 | document.querySelector('#change-checkbox-field').addEventListener('goat-checkbox--change',
22 | function(event) {
23 | console.log('Input changed to :: ' + event.target.value);
24 | });
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/checkbox/_sections/Intermediate.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 |
5 | All
6 |
7 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/checkbox/_sections/Readonly.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 | Make input look inactive by adding the disabled boolean
6 | attribute to any
7 | <input>
element.
8 |
10 |
11 |
12 | Readonly checkbox
13 | Readonly checkbox
14 |
15 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/checkbox/_sections/Sizes.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 | Here are several predefined checkbox sizes, each serving its own semantic purpose.
5 |
6 |
7 | Large
8 | Medium
9 |
10 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/checkbox/_sections/Usage.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 | Here are several predefined checkbox styles, each serving its own semantic purpose.
5 |
6 |
7 | Male
8 | Want ice cream?
9 | Join the group?
10 |
11 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/code-highlighter/index.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Layout from '../../../layouts/Component.astro';
3 | import { getComponentDetails } from '../../../_data/getComponentDetails.ts';
4 | import ApiPanel from '../../../components/ApiPanel.astro';
5 | const componentDetails = getComponentDetails('goat-code-highlighter');
6 |
7 | import UsageSection from './_sections/usage.astro';
8 | import OverviewPanel from '../../../components/OverviewPanel.astro';
9 |
10 | const sections = [
11 | {
12 | 'title': 'Usage',
13 | 'Component': UsageSection,
14 | }];
15 | ---
16 |
17 |
18 |
19 | Overview
20 | Playground
21 | API
22 |
23 |
24 |
25 |
26 |
27 | Work in progress
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/current-time/_sections/timezone.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 |
5 |
6 |
7 |
8 | (Local)
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/current-time/_sections/usage.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/date-picker/_sections/disabled.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 |
5 | Make input look inactive by adding the disabled boolean
7 | attribute to any
8 | <input>
element.
9 |
10 |
11 |
12 |
13 |
14 |
15 | Read only
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/date-picker/_sections/sizes.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 |
5 | Fancy larger or smaller input? Add size attribute for additional sizes.
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/date-picker/_sections/usage.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 |
5 | Here are different types of inputs.
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/dropdown/_sections/Usage.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | import MenuItems from './dropdown-menu.astro';
4 | ---
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/dropdown/_sections/dropdown-menu.astro:
--------------------------------------------------------------------------------
1 | ---
2 | ---
3 |
4 |
5 |
6 | Cut
7 | ⌘X
8 |
9 |
10 | Copy
11 | ⌘C
12 |
13 |
14 | Paste
15 | ⌘X
16 |
17 |
18 |
19 | Bold
20 |
21 |
22 | Italic
23 |
24 |
25 |
26 | Delete
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/empty-state/_sections/full-page.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 |
5 |
13 |
14 | Go to home page
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/empty-state/_sections/menu.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 |
9 |
10 |
13 |
14 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/flow-designer/_sections/usage.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 |
5 |
6 |
7 |
8 |
22 |
23 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/flow-designer/index.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Layout from '../../../layouts/Component.astro';
3 | import { getComponentDetails } from '../../../_data/getComponentDetails.ts';
4 | import ApiPanel from '../../../components/ApiPanel.astro';
5 | import OverviewPanel from '../../../components/OverviewPanel.astro';
6 | const componentDetails = getComponentDetails('goat-flow-designer');
7 |
8 | import UsageSection from './_sections/usage.astro';
9 |
10 | const sections = [
11 | {
12 | 'title': 'Usage',
13 | 'Component': UsageSection,
14 | }];
15 | ---
16 |
17 |
18 |
19 | Overview
20 | Playground
21 | API
22 |
23 |
24 |
25 |
26 |
27 | Work in progress
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/footer/_sections/usage.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | import HeaderContent from './header-content.astro';
4 | ---
5 |
6 |
11 |
12 |
13 |
14 |
15 |
18 |
19 |
20 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/form-control/index.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Layout from '../../../layouts/Component.astro';
3 | import { getComponentDetails } from '../../../_data/getComponentDetails.ts';
4 | import ApiPanel from '../../../components/ApiPanel.astro';
5 | import OverviewPanel from '../../../components/OverviewPanel.astro';
6 | const componentDetails = getComponentDetails('goat-form-control');
7 |
8 | import UsageSection from './_sections/usage.astro';
9 |
10 | const sections = [
11 | {
12 | 'title': 'Usage',
13 | 'Component': UsageSection,
14 | }];
15 | ---
16 |
17 |
18 |
19 | Overview
20 | Playground
21 | API
22 |
23 |
24 |
25 |
26 |
27 | Work in progress
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/html-editor/_sections/disabled.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Highlighter from '../../../../components/Highlighter.astro';
3 | ---
4 |
5 | Make editor look inactive by adding the disabled boolean
7 | attribute to any
8 | <input>
element.
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/html-editor/_sections/theme.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Highlighter from '../../../../components/Highlighter.astro';
3 | ---
4 |
5 | Please click on checkbox and try disabling able editor.
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/icon/_sections/sizes.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 | Fancy larger or smaller icons? Add size attribute for additional sizes.
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/icon/_sections/variants.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/input/_sections/sizes.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 | Fancy larger or smaller input? Add size attribute for additional sizes.
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/input/_sections/slots.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 | Fancy larger or smaller input? Add size attribute for additional sizes.
5 |
6 |
7 |
8 |
9 | @example.com
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/input/_sections/usage.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 | Here are different types of inputs.
5 |
6 |
7 |
14 |
15 |
16 |
17 |
21 |
22 |
23 |
24 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/link/_sections/usage.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 |
5 | Here are predefined variants of link, each serving its own semantic purpose.
6 |
7 |
8 |
9 | Github
10 |
11 |
12 |
13 |
14 | Some sentence
15 | Inline link
16 | in-between
17 |
18 |
19 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/link/index.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Layout from '../../../layouts/Component.astro';
3 | import { getComponentDetails } from '../../../_data/getComponentDetails.ts';
4 | import ApiPanel from '../../../components/ApiPanel.astro';
5 | import OverviewPanel from '../../../components/OverviewPanel.astro';
6 | const componentDetails = getComponentDetails('goat-link');
7 |
8 | import UsageSection from './_sections/usage.astro';
9 |
10 | const sections = [
11 | {
12 | 'title': 'Usage',
13 | 'Component': UsageSection,
14 | }];
15 | ---
16 |
17 |
18 |
19 | Overview
20 | Playground
21 | API
22 |
23 |
24 |
25 |
26 |
27 | Work in progress
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/menu/_sections/events.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Highlighter from '../../../../components/Highlighter.astro';
3 | ---
4 |
5 |
6 | const $list = document.querySelector('.menu');
7 | $list.addEventListener('goat-menu-item--click',
8 | function(evt) {
9 | console.log('' + JSON.stringify(evt.detail.value, null, 4) + '
');
10 | });
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/menu/_sections/usage.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 |
5 |
31 |
32 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/modal-content/index.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Layout from '../../../layouts/Component.astro';
3 | import { getComponentDetails } from '../../../_data/getComponentDetails.ts';
4 | import ApiPanel from '../../../components/ApiPanel.astro';
5 | import OverviewPanel from '../../../components/OverviewPanel.astro';
6 | const componentDetails = getComponentDetails('goat-modal-content');
7 |
8 |
9 | const sections = [];
10 | ---
11 |
12 |
13 |
14 | API
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/modal/index.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Layout from '../../../layouts/Component.astro';
3 | import { getComponentDetails } from '../../../_data/getComponentDetails.ts';
4 | import ApiPanel from '../../../components/ApiPanel.astro';
5 | import OverviewPanel from '../../../components/OverviewPanel.astro';
6 | const componentDetails = getComponentDetails('goat-modal');
7 |
8 | import UsageSection from './_sections/Usage.astro';
9 |
10 | const sections = [
11 | {
12 | 'title': 'Usage',
13 | 'Component': UsageSection,
14 | }];
15 | ---
16 |
17 |
18 |
19 | Overview
20 | API
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/notification-manager/index.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Layout from '../../../layouts/Component.astro';
3 | import { getComponentDetails } from '../../../_data/getComponentDetails.ts';
4 | import ApiPanel from '../../../components/ApiPanel.astro';
5 | import OverviewPanel from '../../../components/OverviewPanel.astro';
6 | const componentDetails = getComponentDetails('goat-notification-manager');
7 |
8 | import UsageSection from './_sections/usage.astro';
9 |
10 | const sections = [{
11 | 'title': 'Usage',
12 | 'Component': UsageSection,
13 | }];
14 | ---
15 |
16 |
17 |
18 | Overview
19 | Playground
20 | API
21 |
22 |
23 |
24 |
25 |
26 | Work in progress
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/notification/_sections/HighContrastSection.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | import NotificationContent from './notification-content.astro';
4 | ---
5 | High contrast notifications are designed to be more accessible for users with visual
6 | impairments. They have a higher contrast ratio between the text and background color.
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/notification/_sections/States.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | import NotificationContent from './notification-content.astro';
4 | ---
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/notification/_sections/Usage.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | import NotificationContent from './notification-content.astro';
4 | ---
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/notification/_sections/notification-content.astro:
--------------------------------------------------------------------------------
1 | ---
2 | ---
3 | A new
4 | software
5 | update is available.
6 |
7 |
8 | A new version of the software is available. Click the button to view the changelog.
9 |
10 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/number/_sections/slots.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 | Fancy larger or smaller input? Add size attribute for additional sizes.
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/number/_sections/states.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 | Disabled
5 | Make input look inactive by adding the disabled boolean
attribute to any
6 | <button>
element.
7 |
8 |
9 |
10 |
11 |
12 |
13 | Read only
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/number/_sections/usage.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 | Here are different types of inputs.
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/popover-content/index.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Layout from '../../../layouts/Component.astro';
3 | import { getComponentDetails } from '../../../_data/getComponentDetails.ts';
4 | import ApiPanel from '../../../components/ApiPanel.astro';
5 | const componentDetails = getComponentDetails('goat-popover-content');
6 | ---
7 |
8 |
9 |
10 | API
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/progress/_sections/sizes.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 | Fancy larger or smaller spinners? Add size attribute for additional sizes.
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/progress/_sections/usage.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 |
5 |
6 |
7 |
8 |
9 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/sidenav/_sections/events.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Highlighter from '../../../../components/Highlighter.astro';
3 | ---
4 |
5 |
6 | const $list = document.querySelector('.menu');
7 | $list.addEventListener('goat-menu-item-click',
8 | function(evt) {
9 | console.log('' + JSON.stringify(evt.detail.value, null, 4) + '
');
10 | });
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/sidenav/_sections/usage.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 |
5 |
6 |
7 | New
8 | Open
9 | Save
10 | Disabled
11 |
12 | Print (with value)
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/slider/_sections/usage.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 |
5 |
6 |
7 |
8 |
17 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/slider/index.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Layout from '../../../layouts/Component.astro';
3 | import { getComponentDetails } from '../../../_data/getComponentDetails.ts';
4 | import ApiPanel from '../../../components/ApiPanel.astro';
5 | import OverviewPanel from '../../../components/OverviewPanel.astro';
6 | const componentDetails = getComponentDetails('goat-slider');
7 |
8 | import UsageSection from './_sections/usage.astro';
9 |
10 | const sections = [
11 | {
12 | 'title': 'Usage',
13 | 'Component': UsageSection,
14 | }];
15 | ---
16 |
17 |
18 |
19 | Overview
20 | Playground
21 | API
22 |
23 |
24 |
25 |
26 |
27 | Work in progress
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/spinner/_sections/sizes.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 | Fancy larger or smaller spinners? Add size attribute for additional sizes.
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/spinner/_sections/usage.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 |
5 |
6 | Loading...
7 |
8 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/spinner/_sections/variants.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/svg/_sections/sizes.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/svg/_sections/usage.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 | Fancy larger or smaller icons? Add size attribute for additional sizes.
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/svg/_sections/variants.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/table/_column-config.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "name": "name",
4 | "label": "Name",
5 | "width": 16,
6 | "fixed": true
7 | },
8 | {
9 | "name": "age",
10 | "label": "Age",
11 | "width": 7
12 | },
13 | {
14 | "name": "eyeColor",
15 | "label": "Eye Color"
16 | },
17 | {
18 | "name": "company",
19 | "label": "Company"
20 | },
21 | {
22 | "name": "email",
23 | "label": "Email",
24 | "width": 25
25 | },
26 | {
27 | "name": "address",
28 | "label": "Address",
29 | "width": 20
30 | }
31 | ]
32 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/table/_sections/empty.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
17 |
18 |
19 | {% GoatHighlighter language:"javascript" %}
20 | const $emptyTable = document.getElementById('empty-table');
21 | // Columns
22 | $emptyTable.columns = {% include_relative column-config.json %};
23 | // Data
24 | $emptyTable.data = [];
25 | $emptyTable.emptyState = {
26 | 'headline': 'Empty list',
27 | 'description': 'There are no employees to display',
28 | 'action': 'Create Employee',
29 | 'actionUrl': '#'
30 | };
31 | {% endGoatHighlighter %}
32 |
33 |
34 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/table/index.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Layout from '../../../layouts/Component.astro';
3 | import { getComponentDetails } from '../../../_data/getComponentDetails.ts';
4 | import ApiPanel from '../../../components/ApiPanel.astro';
5 | import OverviewPanel from '../../../components/OverviewPanel.astro';
6 | const componentDetails = getComponentDetails('goat-table');
7 |
8 | import UsageSection from './_sections/usage.astro';
9 |
10 | const sections = [{
11 | 'title': 'Usage',
12 | 'Component': UsageSection,
13 | }];
14 | ---
15 |
16 |
17 |
18 | Overview
19 | API
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/tabs/_sections/Icons.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 | Here are several predefined button styles, each serving its own semantic purpose.
5 |
6 |
7 |
8 |
9 | First tab
10 | Second tab
11 | Disabled tab
12 | Last tab
13 |
14 |
15 |
16 | First tab content
17 |
18 |
19 |
20 | Second tab content
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 | Circle
31 | Email
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/tabs/_sections/usage.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 |
9 |
10 |
11 |
12 | First tab
13 | Second tab
14 | Disabled tab
15 | External link
16 |
17 |
18 |
19 | First content
20 |
21 |
22 |
23 | Second content
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/tag/_sections/usage.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 |
5 |
6 |
7 | Gray
8 | Blue
9 | Red
10 |
14 | Green
15 |
16 | Yellow
17 |
18 |
19 |
20 | Gray
21 | Blue
22 | Red
23 | Green
24 | Yellow
25 |
26 |
27 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/text/_sections/color-variants.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 |
5 | Primary
6 | Secondary
7 | Tertiary / Helper
8 | Error
9 | Inverse
10 |
11 |
16 |
17 |
18 | Primary
19 |
20 |
21 |
22 | Primary
23 |
24 |
25 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/text/_sections/fluid-heading-styles.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 |
5 |
6 | The fluid heading styles are primarily used in web pages, and are therefore part of the expressive set of type styles. These headings are responsive and the type styles actually change size incrementally (almost imperceptibly) between the different breakpoints — hence the name “fluid.”
7 |
8 |
9 |
10 |
11 | This is for component and layout headings.
12 |
13 |
14 | This is for layout headings.
15 |
16 |
17 | This is for layout headings.
18 |
19 |
20 | This is for layout headings.
21 |
22 |
23 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/textarea/_sections/states.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 | Disabled
5 | Make input look inactive by adding the disabled boolean
attribute to any
6 | <button>
element.
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | Readonly
16 | Make input look inactive by adding the disabled boolean
attribute to any
17 | <button>
element.
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/textarea/_sections/usage.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/time-picker/_sections/disabled.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 | Make input look inactive by adding the disabled boolean
6 | attribute to any
7 | <input>
element.
8 |
10 |
11 |
12 |
13 |
14 |
15 | Read only
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/time-picker/_sections/sizes.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 | Fancy larger or smaller input? Add size attribute for additional sizes.
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/time-picker/_sections/usage.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 | Here are different types of inputs.
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/toggle/_sections/events.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Highlighter from '../../../../components/Highlighter.astro';
3 | ---
4 | On change of toggle value a CustomEvent goat:change
is
6 | triggered by the element.
7 |
9 |
10 |
11 |
12 | Change Event?
13 |
18 |
19 |
20 |
21 | document.querySelector('#change-toggle-field').addEventListener('goat:change', function(event) {
22 | console.log('Input changed to :: ' + event.target.value);
23 | });
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/toggle/_sections/sizes.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 | Here are several predefined toggle sizes, each serving its own semantic purpose.
5 |
6 |
7 |
8 |
9 | Large
10 | Medium
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/toggle/_sections/states.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 |
5 | Disabled
6 | Make input look inactive by adding the disabled boolean
8 | attribute to any
9 | <input>
element.
10 |
11 |
12 |
13 | Disabled toggle
14 | Disabled toggle
15 |
16 |
17 | Readonly
18 | Make input look inactive by adding the disabled boolean
20 | attribute to any
21 | <input>
element.
22 |
23 |
24 |
25 | Readonly toggle
26 | Readonly toggle
27 |
28 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/toggle/_sections/usage.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 |
5 | Want ice cream?
6 |
7 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/tooltip/_sections/Shared.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 |
5 | The dropdown can be positioned relative to the trigger element. Possible positions are: top-start
,
6 | top-end
,
7 | bottom-end
, bottom-start
.
8 |
9 |
10 | You can also use the positions
attribute to set all preferred position of the
11 | dropdown. On scroll, the dropdown will be repositioned to the
12 | closest position.
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/tooltip/_sections/Usage.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | import Highlighter from '../../../../components/Highlighter.astro';
4 | ---
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 | Test
19 |
20 |
21 | Very large content. Very large content. Very large content.Very large content. Very large content. Very large content.
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/tree-view/_sections/events.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Highlighter from '../../../../components/Highlighter.astro';
3 | ---
4 |
5 |
6 |
7 | const treeView = document.querySelector('#tree-view');
8 | treeView.addEventListener('goat-tree-node--click', function(evt) {
9 | myConsole.log(JSON.stringify(evt.detail.value, null, 4), 'goat-tree-node-click');
10 | });
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/tree-view/_sections/usage.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
21 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/url-input/_sections/sizes.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 | Fancy larger or smaller input? Add size attribute for additional sizes.
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/url-input/_sections/slots.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 | Fancy larger or smaller input? Add size attribute for additional sizes.
5 |
6 |
7 |
8 |
9 | @example.com
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/astro-docs/src/pages/components/url-input/_sections/usage.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import HighlighterCard from '../../../../components/HighlighterCard.astro';
3 | ---
4 | Here are different types of inputs.
5 |
6 |
7 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/astro-docs/src/styles/blog.scss:
--------------------------------------------------------------------------------
1 | @charset "utf-8";
2 | @import "mixin";
3 |
4 |
5 | :root {
6 | --header-height: 3rem;
7 | }
8 |
9 | .top-nav {
10 | box-shadow: var(--shadow-sm);
11 | border-bottom: 1px solid var(--border-strong-01);
12 | }
13 |
14 |
15 | .page-container {
16 | min-height: calc(100vh - 67px - 48px);
17 | }
18 |
19 |
20 | .legal {
21 | margin-bottom: 0;
22 | padding-bottom: var(--spacing-05);
23 | }
24 |
25 |
26 | .blog-posts {
27 |
28 | .post-list {
29 | margin-top: var(--spacing-07);
30 |
31 | .item {
32 | margin-bottom: var(--spacing-07);
33 | }
34 | }
35 |
36 | }
37 |
38 | .js-scroll-nav {
39 | color: var(--text-primary);
40 | }
41 |
--------------------------------------------------------------------------------
/astro-docs/src/styles/mixin.scss:
--------------------------------------------------------------------------------
1 | @mixin for-phone-only {
2 | @media (max-width: 671px) {
3 | @content;
4 | }
5 | }
6 |
7 | @mixin for-tablet-portrait-up {
8 | @media (min-width: 672px) {
9 | @content;
10 | }
11 | }
12 |
13 | @mixin for-tablet-landscape-up {
14 | @media (min-width: 1056px) {
15 | @content;
16 | }
17 | }
18 |
19 | @mixin for-desktop-up {
20 | @media (min-width: 1312px) {
21 | @content;
22 | }
23 | }
24 |
25 | @mixin for-big-desktop-up {
26 | @media (min-width: 1584px) {
27 | @content;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/astro-docs/src/styles/post.scss:
--------------------------------------------------------------------------------
1 | @charset "utf-8";
2 | @import "mixin";
3 |
4 |
5 | :root {
6 | --header-height: 3rem;
7 | }
8 |
9 | .top-nav {
10 | box-shadow: var(--shadow-sm);
11 | border-bottom: 1px solid var(--border-strong-01);
12 | }
13 |
14 | .page-container {
15 | min-height: calc(100vh - 67px - 48px);
16 | }
17 |
18 | .legal {
19 | margin-bottom: 0;
20 | padding-bottom: var(--spacing-05);
21 | }
22 |
23 |
24 | .js-scroll-nav {
25 | color: var(--text-primary);
26 | }
27 |
--------------------------------------------------------------------------------
/astro-docs/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "astro/tsconfigs/strict"
3 | }
4 |
--------------------------------------------------------------------------------
/bin/clean-branches.sh:
--------------------------------------------------------------------------------
1 | git fetch --all
2 | git branch -vv | grep ': gone]'| grep -v "\*" | awk '{ print $1; }' | xargs git branch -d
3 |
--------------------------------------------------------------------------------
/env.js:
--------------------------------------------------------------------------------
1 | const fs = require('fs');
2 | const arguments = process.argv;
3 |
4 | // Create a new file called .env
5 | fs.writeFileSync('.env', '');
6 |
7 | if (arguments[2] === 'LOCAL') {
8 | fs.appendFileSync('.env', 'THIRD_PARTY_ASSETS=LOCAL\n');
9 | } else {
10 | fs.appendFileSync('.env', 'THIRD_PARTY_ASSETS=REMOTE\n');
11 | }
12 |
--------------------------------------------------------------------------------
/qodana.yaml:
--------------------------------------------------------------------------------
1 | #-------------------------------------------------------------------------------#
2 | # Qodana analysis is configured by qodana.yaml file #
3 | # https://www.jetbrains.com/help/qodana/qodana-yaml.html #
4 | #-------------------------------------------------------------------------------#
5 | version: "1.0"
6 |
7 | #Specify inspection profile for code analysis
8 | profile:
9 | name: qodana.starter
10 |
11 | #Enable inspections
12 | #include:
13 | # - name:
14 |
15 | #Disable inspections
16 | #exclude:
17 | # - name:
18 | # paths:
19 | # -
20 |
21 | #The following options are only applied in CI/CD environment
22 | #These options are ignored during local run
23 |
24 | #Execute shell command before Qodana execution
25 | #bootstrap: sh ./prepare-qodana.sh
26 |
27 | #Install IDE plugins before Qodana execution
28 | #plugins:
29 | # - id: #(plugin id can be found at https://plugins.jetbrains.com)
30 |
31 | #Specify Qodana linter for analysis
32 | linter: jetbrains/qodana-js:latest
33 |
--------------------------------------------------------------------------------
/research/Screenshot 2022-08-03 084633.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goatui/components/f86abc561b32772ce90aff5bdbaa8a39883f7790/research/Screenshot 2022-08-03 084633.png
--------------------------------------------------------------------------------
/research/loader.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | JS Bin
7 |
8 |
9 |
19 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/research/quote.svg:
--------------------------------------------------------------------------------
1 |
9 |
--------------------------------------------------------------------------------
/robots.txt:
--------------------------------------------------------------------------------
1 | User-agent: *
2 | Disallow:
3 | Disallow: /no-search/
4 | Disallow: /components/*/sections/*.html
5 | Sitemap: https://goatui.com/sitemap.xml
6 |
--------------------------------------------------------------------------------
/src/3d-party/d3js/index.tsx:
--------------------------------------------------------------------------------
1 | import { loadScript, waitUntil } from '../../utils/utils';
2 | import { getAssetPath } from '@stencil/core';
3 |
4 | let loadD3Called = false;
5 |
6 | export async function loadD3JS() {
7 | if (loadD3Called) {
8 | await waitUntil(() => !!window['d3']);
9 | return;
10 | }
11 |
12 | loadD3Called = true;
13 |
14 | if (process.env.THIRD_PARTY_ASSETS == 'LOCAL')
15 | await loadScript(getAssetPath('./assets/node_modules/d3/dist/d3.min.js'));
16 | else await loadScript('https://cdn.jsdelivr.net/npm/d3@7.9.0/dist/d3.min.js');
17 |
18 | await waitUntil(() => !!window['d3']);
19 | }
20 |
--------------------------------------------------------------------------------
/src/3d-party/prism/prism-line-numbers.scss:
--------------------------------------------------------------------------------
1 | pre[class*=language-].line-numbers{position:relative;padding-left:3.8em;counter-reset:linenumber}pre[class*=language-].line-numbers>code{position:relative;white-space:inherit}.line-numbers .line-numbers-rows{position:absolute;pointer-events:none;top:0;font-size:100%;left:-3.8em;width:3em;letter-spacing:-1px;border-right:1px solid #999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.line-numbers-rows>span{display:block;counter-increment:linenumber}.line-numbers-rows>span:before{content:counter(linenumber);color:#999;display:block;padding-right:.8em;text-align:right}
2 |
--------------------------------------------------------------------------------
/src/assets/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "dependencies": {
3 | "@carbon/icons": "11.41.0",
4 | "d3": "7.9.0",
5 | "monaco-editor": "0.48.0",
6 | "prismjs": "1.29.0"
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/src/assets/styles/theme.css.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sourceRoot":"","sources":["../../globalStyles/theme/theme.scss","../../globalStyles/mixins.scss"],"names":[],"mappings":"AAGA,MACE,eAEE,k1xBAIJ,KACE,0BAGF,ECHI,yFACA,yCACA,4CACA,+CACA,gDDGJ,MACE,uCACA,yBACA,WAGF,kBACE,sBACA,YAGF,yBACE,yBAGF,eACE,sBAGF,SACE,iBACA,oBACA,gBACA,yBACA,WAGF,kBACE,6BAGF,UACE,2BAGF,UACE,2BAIF,mBAEI,k1xBAIJ,iBAEI,oiGAIJ,iBAEI,q4FAIJ,kBAEI","file":"theme.css"}
--------------------------------------------------------------------------------
/src/components/accordion/accordion/accordion.scss:
--------------------------------------------------------------------------------
1 | @import "../../../globalStyles/commons";
2 |
3 | :host {
4 | display: block;
5 | }
6 |
7 | slot::slotted(goat-accordion-item) {
8 | border-top: 1px solid var(--border-subtle);
9 | }
10 |
11 | slot::slotted(goat-accordion-item:last-child) {
12 | border-bottom: 1px solid var(--border-subtle);
13 | }
14 |
--------------------------------------------------------------------------------
/src/components/accordion/accordion/readme.md:
--------------------------------------------------------------------------------
1 | # goat-avatar
2 |
3 |
4 |
5 |
6 |
7 |
8 | ## Properties
9 |
10 | | Property | Attribute | Description | Type | Default |
11 | | ---------- | ---------- | ---------------------------------- | ---------------------- | ------- |
12 | | `align` | `align` | Accordion item dropdown alignment. | `"end" \| "start"` | `'end'` |
13 | | `multiple` | `multiple` | | `boolean` | `false` |
14 | | `size` | `size` | The According size. | `"lg" \| "md" \| "sm"` | `'md'` |
15 |
16 |
17 | ----------------------------------------------
18 |
19 | *Built with love!*
20 |
--------------------------------------------------------------------------------
/src/components/application/calendar/calendar/CalendarEvent.tsx:
--------------------------------------------------------------------------------
1 | import { BaseEvent } from './event-management/BaseEvent';
2 |
3 | export class CalendarEvent extends BaseEvent {
4 | data: any;
5 | title: string;
6 | color?: string;
7 | constructor(start: Date, end: Date, title: string, color: string, data: any) {
8 | super(start, end);
9 | this.data = data;
10 | if (color) this.color = color;
11 | this.title = title;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/components/application/calendar/calendar/column-view/column-view-background/column-view-background.scss:
--------------------------------------------------------------------------------
1 | @import "../../../../../../globalStyles/commons";
2 |
3 | :host {
4 | display: block;
5 | }
6 |
7 |
8 | .background {
9 | .row {
10 | display: flex;
11 | height: 2rem;
12 | border-bottom: 1px dashed var(--scale-color);
13 |
14 | &.hour {
15 | border-bottom: 1px solid var(--scale-color);
16 | }
17 |
18 | &:last-child {
19 | border-bottom: 0;
20 | }
21 |
22 | .column {
23 | flex: 1;
24 | border-right: 1px solid var(--scale-color);
25 | }
26 | }
27 | }
28 |
29 | .column {
30 | &.today {
31 | background: var(--field-01);
32 |
33 | .column-header {
34 | border-top-color: v(--color-secondary);
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/src/components/application/calendar/calendar/column-view/column-view-background/readme.md:
--------------------------------------------------------------------------------
1 | # goat-calendar-column-view-background
2 |
3 |
4 |
5 |
6 |
7 |
8 | ## Properties
9 |
10 | | Property | Attribute | Description | Type | Default |
11 | | ------------- | ------------ | ----------- | ------ | ----------- |
12 | | `currentTime` | -- | | `Date` | `undefined` |
13 | | `dateRange` | `date-range` | | `any` | `undefined` |
14 |
15 |
16 | ## Dependencies
17 |
18 | ### Used by
19 |
20 | - [goat-calendar-column-view](..)
21 |
22 | ### Graph
23 | ```mermaid
24 | graph TD;
25 | goat-calendar-column-view --> goat-calendar-column-view-background
26 | style goat-calendar-column-view-background fill:#f9f,stroke:#333,stroke-width:4px
27 | ```
28 |
29 | ----------------------------------------------
30 |
31 | *Built with love!*
32 |
--------------------------------------------------------------------------------
/src/components/application/calendar/calendar/column-view/utils.tsx:
--------------------------------------------------------------------------------
1 | import { calculateWeekRange } from '../utils';
2 | import { addDays, endOfDay, startOfDay } from 'date-fns';
3 |
4 | export function calculateDateRange(view, contextDate, days) {
5 | if (view === 'week') {
6 | return calculateWeekRange(contextDate, 1 /* monday */);
7 | } else {
8 | const dateRange: any = {};
9 | dateRange.startDate = startOfDay(contextDate);
10 | dateRange.endDate = endOfDay(addDays(contextDate, days - 1));
11 | dateRange.totalDays = days;
12 | return dateRange;
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/components/application/calendar/calendar/event-management/EventManager.tsx:
--------------------------------------------------------------------------------
1 | import {BaseEvent} from './BaseEvent';
2 |
3 | export class EventManager {
4 | events: BaseEvent[];
5 |
6 | constructor(events: BaseEvent[]) {
7 | this.events = events;
8 | }
9 |
10 | getEventsOverlappingWithDate(date: Date) {
11 | return this.events.filter(event => event.isOverlappingWithDate(date));
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/components/application/calendar/calendar/month-view/month-view-background/month-view-background.scss:
--------------------------------------------------------------------------------
1 | @import "../../../../../../globalStyles/commons";
2 |
3 | :host {
4 | display: block;
5 | }
6 |
7 | .background {
8 | .row {
9 | display: flex;
10 | height: 2rem;
11 | border-bottom: 1px dashed var(--scale-color);
12 |
13 | &.hour {
14 | border-bottom: 1px solid var(--scale-color);
15 | }
16 |
17 | &:last-child {
18 | border-bottom: 0;
19 | }
20 |
21 | .column {
22 | flex: 1;
23 | border-right: 1px solid var(--scale-color);
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/src/components/application/calendar/calendar/month-view/month-view-background/readme.md:
--------------------------------------------------------------------------------
1 | # goat-calendar-column-view-background
2 |
3 |
4 |
5 |
6 |
7 |
8 | ## Properties
9 |
10 | | Property | Attribute | Description | Type | Default |
11 | | --------- | --------- | ----------- | -------- | ------- |
12 | | `columns` | `columns` | | `number` | `1` |
13 |
14 |
15 | ----------------------------------------------
16 |
17 | *Built with love!*
18 |
--------------------------------------------------------------------------------
/src/components/application/calendar/calendar/month-view/utils.tsx:
--------------------------------------------------------------------------------
1 | import { calculateWeekRange } from '../utils';
2 | import { addDays, endOfDay, startOfDay } from 'date-fns';
3 |
4 | export function calculateDateRange(view, contextDate, days) {
5 | if (view === 'week') {
6 | return calculateWeekRange(contextDate, 1 /* monday */);
7 | } else {
8 | const dateRange: any = {};
9 | dateRange.startDate = startOfDay(contextDate);
10 | dateRange.endDate = endOfDay(addDays(contextDate, days - 1));
11 | dateRange.totalDays = days;
12 | return dateRange;
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/components/application/calendar/calendar/types.tsx:
--------------------------------------------------------------------------------
1 | type CalendarViewType = {
2 | label: string;
3 | value: string;
4 | type: string;
5 | days?: number;
6 | };
7 | type EventType = {
8 | start: Date;
9 | end: Date;
10 | title: string;
11 | color?: string;
12 | [key: string]: any;
13 | };
14 |
15 | export type { CalendarViewType, EventType };
16 |
--------------------------------------------------------------------------------
/src/components/application/calendar/calendar/utils.tsx:
--------------------------------------------------------------------------------
1 | import { endOfMonth, endOfWeek, startOfMonth, startOfWeek } from 'date-fns/esm';
2 |
3 | /**
4 | * Calculates start and end dates of month in a calendar.
5 | * @param date Context date for which range need to calculated.
6 | * @param weekStartsOn A numeric value. The index of the first day of the week (0 - Sunday)
7 | */
8 | export function calculateMonthRange(
9 | date,
10 | weekStartsOn: 0 | 1 | 2 | 3 | 4 | 5 | 6 = 1,
11 | ) {
12 | const startDate = startOfWeek(startOfMonth(date), { weekStartsOn });
13 | const endDate = endOfWeek(endOfMonth(date), { weekStartsOn });
14 | return {
15 | startDate,
16 | endDate,
17 | totalDays: 42,
18 | };
19 | }
20 |
21 | /*
22 | *
23 | */
24 | export function calculateWeekRange(
25 | date,
26 | weekStartsOn: 0 | 1 | 2 | 3 | 4 | 5 | 6 = 1,
27 | ) {
28 | const startDate = startOfWeek(date, { weekStartsOn });
29 | const endDate = endOfWeek(date, { weekStartsOn });
30 | return {
31 | startDate,
32 | endDate,
33 | totalDays: 7,
34 | };
35 | }
36 |
37 | export const LONG_EVENT_PADDING = 0.25;
38 |
--------------------------------------------------------------------------------
/src/components/application/condition-builder/cb-compound-expression/cb-compound-expression.scss:
--------------------------------------------------------------------------------
1 | @import "../../../../globalStyles/commons";
2 |
3 |
4 | .compound-expression {
5 | display: flex;
6 | padding-top: 1rem;
7 |
8 | .field-name-container {
9 | display: flex;
10 | flex-direction: column;
11 | padding-top: .5rem;
12 | padding-right: 1rem;
13 |
14 | .field-compound-type {
15 | flex: 1;
16 | padding-bottom: 1.25rem;
17 | }
18 | }
19 |
20 | .conditions {
21 | .condition-builder__condition {
22 | display: flex;
23 | gap: .5rem;
24 | align-items: center;
25 | padding-bottom: 1rem;
26 | &:last-child {
27 | padding-bottom: 0;
28 | }
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/src/components/application/condition-builder/cb-compound-expression/readme.md:
--------------------------------------------------------------------------------
1 | # goat-icon
2 |
3 |
4 |
5 |
6 |
7 |
8 | ## Properties
9 |
10 | | Property | Attribute | Description | Type | Default |
11 | | ------------------- | -------------------- | ----------- | --------------- | ----------- |
12 | | `conditionOperator` | `condition-operator` | | `"and" \| "or"` | `undefined` |
13 | | `fieldLabel` | `field-label` | | `string` | `''` |
14 | | `fieldName` | `field-name` | | `string` | `''` |
15 |
16 |
17 | ## Dependencies
18 |
19 | ### Depends on
20 |
21 | - [goat-text](../../../typography/text)
22 | - [goat-cb-divider](../cb-divider)
23 | - [goat-tag](../../../tag)
24 |
25 | ### Graph
26 | ```mermaid
27 | graph TD;
28 | goat-cb-compound-expression --> goat-text
29 | goat-cb-compound-expression --> goat-cb-divider
30 | goat-cb-compound-expression --> goat-tag
31 | goat-tag --> goat-icon
32 | style goat-cb-compound-expression fill:#f9f,stroke:#333,stroke-width:4px
33 | ```
34 |
35 | ----------------------------------------------
36 |
37 | *Built with love!*
38 |
--------------------------------------------------------------------------------
/src/components/application/condition-builder/cb-divider/cb-divider.tsx:
--------------------------------------------------------------------------------
1 | import {Component, h, Host, Prop} from '@stencil/core';
2 |
3 |
4 | @Component({
5 | tag: 'goat-cb-divider',
6 | styleUrl: 'cb-divider.scss',
7 | shadow: true,
8 | })
9 | export class CbDivider {
10 |
11 | @Prop() vertical: boolean = false;
12 |
13 | @Prop() connectStart: boolean = false;
14 |
15 | @Prop() connectEnd: boolean = false;
16 |
17 | render() {
18 | return (
19 |
20 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 | );
34 | }
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/src/components/application/condition-builder/cb-divider/readme.md:
--------------------------------------------------------------------------------
1 | # goat-icon
2 |
3 |
4 |
5 |
6 |
7 |
8 | ## Properties
9 |
10 | | Property | Attribute | Description | Type | Default |
11 | | -------------- | --------------- | ----------- | --------- | ------- |
12 | | `connectEnd` | `connect-end` | | `boolean` | `false` |
13 | | `connectStart` | `connect-start` | | `boolean` | `false` |
14 | | `vertical` | `vertical` | | `boolean` | `false` |
15 |
16 |
17 | ## Dependencies
18 |
19 | ### Used by
20 |
21 | - [goat-cb-compound-expression](../cb-compound-expression)
22 | - [goat-cb-predicate](../cb-predicate)
23 | - [goat-condition-builder](../condition-builder)
24 |
25 | ### Graph
26 | ```mermaid
27 | graph TD;
28 | goat-cb-compound-expression --> goat-cb-divider
29 | goat-cb-predicate --> goat-cb-divider
30 | goat-condition-builder --> goat-cb-divider
31 | style goat-cb-divider fill:#f9f,stroke:#333,stroke-width:4px
32 | ```
33 |
34 | ----------------------------------------------
35 |
36 | *Built with love!*
37 |
--------------------------------------------------------------------------------
/src/components/application/condition-builder/cb-expression/cb-expression.scss:
--------------------------------------------------------------------------------
1 | @import "../../../../globalStyles/commons";
2 |
3 |
4 | .expression {
5 | display: flex;
6 | gap: .5rem;
7 | align-items: center;
8 | padding-bottom: 1rem;
9 | }
10 |
--------------------------------------------------------------------------------
/src/components/application/condition-builder/cb-expression/cb-expression.tsx:
--------------------------------------------------------------------------------
1 | import {Component, h, Host, Prop} from '@stencil/core';
2 |
3 |
4 | @Component({
5 | tag: 'goat-cb-expression',
6 | styleUrl: 'cb-expression.scss',
7 | shadow: true,
8 | })
9 | export class CbExpression {
10 |
11 |
12 | @Prop() operators: any[] = [];
13 |
14 | @Prop() operatorValue: string = '';
15 |
16 |
17 | render() {
18 | return (
19 |
20 |
21 |
22 |
26 |
27 |
28 |
29 |
30 | );
31 | }
32 |
33 | }
34 |
--------------------------------------------------------------------------------
/src/components/application/condition-builder/cb-predicate/cb-predicate.scss:
--------------------------------------------------------------------------------
1 | @import "../../../../globalStyles/commons";
2 |
3 |
4 | .predicate:not(.vertical) {
5 |
6 | .predicate-body {
7 | padding-top: 1rem;
8 | }
9 |
10 | .predicate-condition-operator {
11 | padding: 1rem 2rem 0 2rem;
12 | }
13 | }
14 |
15 |
16 | .predicate.vertical {
17 | display: flex;
18 | align-items: stretch;
19 |
20 | .predicate-condition-operator {
21 | padding: 2rem 0 1rem 0;
22 | padding-inline-end: v(--spacing-05);
23 | }
24 |
25 | .predicate-body {
26 | flex: 1;
27 | }
28 | }
29 |
30 |
--------------------------------------------------------------------------------
/src/components/application/condition-builder/cb-predicate/readme.md:
--------------------------------------------------------------------------------
1 | # goat-icon
2 |
3 |
4 |
5 |
6 |
7 |
8 | ## Properties
9 |
10 | | Property | Attribute | Description | Type | Default |
11 | | ------------------- | -------------------- | ----------- | --------------- | ----------- |
12 | | `conditionOperator` | `condition-operator` | | `"and" \| "or"` | `undefined` |
13 | | `vertical` | `vertical` | | `boolean` | `false` |
14 |
15 |
16 | ## Dependencies
17 |
18 | ### Depends on
19 |
20 | - [goat-cb-divider](../cb-divider)
21 | - [goat-tag](../../../tag)
22 |
23 | ### Graph
24 | ```mermaid
25 | graph TD;
26 | goat-cb-predicate --> goat-cb-divider
27 | goat-cb-predicate --> goat-tag
28 | goat-tag --> goat-icon
29 | style goat-cb-predicate fill:#f9f,stroke:#333,stroke-width:4px
30 | ```
31 |
32 | ----------------------------------------------
33 |
34 | *Built with love!*
35 |
--------------------------------------------------------------------------------
/src/components/application/condition-builder/condition-builder/condition-builder.scss:
--------------------------------------------------------------------------------
1 | @import "../../../../globalStyles/commons";
2 |
3 |
4 | :host {
5 | display: block;
6 | --compound-type-line-color: #{v(--color-primary)};
7 | }
8 |
9 | .condition-builder {
10 |
11 | .condition-builder__predicates {
12 | display: flex;
13 | flex-direction: column;
14 | gap: 1rem;
15 | padding-bottom: 1rem;
16 | .predicate-divider {
17 | padding: 0 2rem;
18 | }
19 | }
20 |
21 |
22 |
23 |
24 |
25 |
26 | }
27 |
28 |
--------------------------------------------------------------------------------
/src/components/application/current-time/current-time.scss:
--------------------------------------------------------------------------------
1 | @import "../../../globalStyles/commons";
2 |
3 | :host {
4 | display: inline-block;
5 | }
6 |
--------------------------------------------------------------------------------
/src/components/application/current-time/current-time.spec.tsx:
--------------------------------------------------------------------------------
1 | import { newSpecPage } from '@stencil/core/testing';
2 | import { CurrentTime } from './current-time';
3 |
4 | describe('current-time', () => {
5 | it('renders', async () => {
6 | const page = await newSpecPage({
7 | components: [CurrentTime],
8 | html: '',
9 | });
10 | const time = new Date().toLocaleTimeString('en-US');
11 | expect(page.root).toEqualHtml(`
12 |
13 |
14 |
15 | ${time}
16 |
17 |
18 |
19 | `);
20 | });
21 | });
22 |
--------------------------------------------------------------------------------
/src/components/application/current-time/readme.md:
--------------------------------------------------------------------------------
1 | # goat-current-time
2 |
3 |
4 |
5 |
6 |
7 |
8 | ## Properties
9 |
10 | | Property | Attribute | Description | Type | Default |
11 | | ---------- | ---------- | ----------- | -------- | ----------- |
12 | | `timezone` | `timezone` | | `string` | `undefined` |
13 |
14 |
15 | ----------------------------------------------
16 |
17 | *Built with love!*
18 |
--------------------------------------------------------------------------------
/src/components/application/flow-designer/canvas/canvas.scss:
--------------------------------------------------------------------------------
1 | @import "../../../../globalStyles/commons";
2 |
3 | :host {
4 | display: block;
5 | }
6 |
7 | .canvas-wrapper {
8 | background: var(--layer-hover-01);
9 | }
10 |
11 | #canvas-background circle {
12 | fill: var(--border-disabled);
13 | }
14 |
15 | #endarrow polyline{
16 | fill: none;
17 | stroke: #231F20;
18 | vector-effect: non-scaling-stroke;
19 | stroke-width: 2;
20 | }
21 |
22 |
23 | .line {
24 |
25 | &.no-color {
26 | stroke: var(--border-strong-01);
27 | }
28 | }
29 |
30 |
31 | .clickable {
32 | cursor: pointer;
33 |
34 | &:hover .line {
35 |
36 | stroke: v(--color-primary);
37 | }
38 |
39 | z-index: 1;
40 | }
41 |
--------------------------------------------------------------------------------
/src/components/application/flow-designer/canvas/readme.md:
--------------------------------------------------------------------------------
1 | # goat-flow-designer
2 |
3 |
4 |
5 |
6 |
7 |
8 | ## Properties
9 |
10 | | Property | Attribute | Description | Type | Default |
11 | | --------- | --------- | ----------- | -------- | ----------- |
12 | | `padding` | `padding` | | `number` | `1` |
13 | | `shapes` | -- | | `any[]` | `[]` |
14 | | `viewbox` | `viewbox` | | `string` | `undefined` |
15 | | `zoom` | `zoom` | | `number` | `1` |
16 |
17 |
18 | ## Dependencies
19 |
20 | ### Used by
21 |
22 | - [goat-flow-designer](../flow-designer)
23 |
24 | ### Graph
25 | ```mermaid
26 | graph TD;
27 | goat-flow-designer --> goat-canvas
28 | style goat-canvas fill:#f9f,stroke:#333,stroke-width:4px
29 | ```
30 |
31 | ----------------------------------------------
32 |
33 | *Built with love!*
34 |
--------------------------------------------------------------------------------
/src/components/application/footer/footer-copyright/footer-copyright.scss:
--------------------------------------------------------------------------------
1 | @import "../../../../globalStyles/commons";
2 |
3 | .legal {
4 | margin-bottom: 0;
5 | }
6 |
--------------------------------------------------------------------------------
/src/components/application/footer/footer-copyright/footer-copyright.tsx:
--------------------------------------------------------------------------------
1 | import { Component, Element, h, Host, Prop } from '@stencil/core';
2 |
3 | @Component({
4 | tag: 'goat-footer-copyright',
5 | styleUrl: 'footer-copyright.scss',
6 | shadow: true,
7 | })
8 | export class FooterCopyright {
9 | @Element() elm!: HTMLElement;
10 |
11 | @Prop() copyright: string;
12 |
13 | @Prop() copyrightHref: string;
14 |
15 | @Prop() year = new Date().getFullYear();
16 |
17 | render() {
18 | return (
19 |
20 |
21 | © {this.year}
22 | {this.copyright}. All Rights Reserved.
23 |
24 |
25 | );
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/src/components/application/footer/footer-copyright/readme.md:
--------------------------------------------------------------------------------
1 | # p4-top-navigation
2 |
3 |
4 |
5 |
6 |
7 |
8 | ## Properties
9 |
10 | | Property | Attribute | Description | Type | Default |
11 | | --------------- | ---------------- | ----------- | -------- | -------------------------- |
12 | | `copyright` | `copyright` | | `string` | `undefined` |
13 | | `copyrightHref` | `copyright-href` | | `string` | `undefined` |
14 | | `year` | `year` | | `number` | `new Date().getFullYear()` |
15 |
16 |
17 | ## Dependencies
18 |
19 | ### Depends on
20 |
21 | - [goat-text](../../../typography/text)
22 | - [goat-link](../../../link)
23 |
24 | ### Graph
25 | ```mermaid
26 | graph TD;
27 | goat-footer-copyright --> goat-text
28 | goat-footer-copyright --> goat-link
29 | style goat-footer-copyright fill:#f9f,stroke:#333,stroke-width:4px
30 | ```
31 |
32 | ----------------------------------------------
33 |
34 | *Built with love!*
35 |
--------------------------------------------------------------------------------
/src/components/application/footer/footer-links/footer-links.scss:
--------------------------------------------------------------------------------
1 | @import "../../../../globalStyles/commons";
2 |
3 | .nav-links {
4 | list-style: none;
5 | display: flex;
6 | gap: 1.5rem;
7 | padding: 0;
8 | margin: 0;
9 | }
10 |
--------------------------------------------------------------------------------
/src/components/application/footer/footer-links/footer-links.tsx:
--------------------------------------------------------------------------------
1 | import { Component, Element, h, Host, Prop } from '@stencil/core';
2 |
3 | @Component({
4 | tag: 'goat-footer-links',
5 | styleUrl: 'footer-links.scss',
6 | shadow: true,
7 | })
8 | export class FooterLinks {
9 | @Element() elm!: HTMLElement;
10 |
11 | @Prop() links: { name: string; href: string }[] = [];
12 |
13 | getLinks() {
14 | if (typeof this.links == 'string') return JSON.parse(this.links);
15 | return this.links;
16 | }
17 |
18 | render() {
19 | return (
20 |
21 |
22 | {this.getLinks().map(link => {
23 | return (
24 | -
25 |
26 | {link.name}
27 |
28 |
29 | );
30 | })}
31 |
32 |
33 | );
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/src/components/application/footer/footer-links/readme.md:
--------------------------------------------------------------------------------
1 | # p4-top-navigation
2 |
3 |
4 |
5 |
6 |
7 |
8 | ## Properties
9 |
10 | | Property | Attribute | Description | Type | Default |
11 | | -------- | --------- | ----------- | ----------------------------------- | ------- |
12 | | `links` | -- | | `{ name: string; href: string; }[]` | `[]` |
13 |
14 |
15 | ## Dependencies
16 |
17 | ### Depends on
18 |
19 | - [goat-link](../../../link)
20 |
21 | ### Graph
22 | ```mermaid
23 | graph TD;
24 | goat-footer-links --> goat-link
25 | style goat-footer-links fill:#f9f,stroke:#333,stroke-width:4px
26 | ```
27 |
28 | ----------------------------------------------
29 |
30 | *Built with love!*
31 |
--------------------------------------------------------------------------------
/src/components/application/footer/footer/footer.scss:
--------------------------------------------------------------------------------
1 | @import "../../../../globalStyles/commons";
2 |
3 | $footer-height: var(--footer-height, 1.75rem);
4 | $header-background-dark: var(--header-background-dark, var(--header-background));
5 | :host {
6 | display: block;
7 | }
8 |
9 | .footer-container {
10 | container: footer-variant-simple / inline-size;
11 | }
12 |
13 | .footer.variant-simple {
14 | display: flex;
15 | background: var(--layer);
16 |
17 | align-items: center;
18 | min-height: $footer-height;
19 |
20 | gap: 1rem;
21 |
22 | .start {
23 | display: flex;
24 | align-items: center;
25 | }
26 |
27 | }
28 |
29 | @container footer-variant-simple (min-width: 768px) {
30 | .footer-container {
31 | .variant-simple {
32 | flex-direction: row;
33 | padding: var(--spacing-05) var(--spacing-07);
34 |
35 | .start {
36 | flex: 1;
37 | }
38 | }
39 | }
40 | }
41 |
42 | @container footer-variant-simple (max-width: 767px) {
43 | .footer-container {
44 | .variant-simple {
45 | flex-direction: column;
46 | padding: var(--spacing-05) var(--spacing-05);
47 |
48 | .slot-container {
49 | width: 100%;
50 | }
51 | }
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/src/components/application/footer/footer/readme.md:
--------------------------------------------------------------------------------
1 | # p4-top-navigation
2 |
3 |
4 |
5 |
6 |
7 |
8 | ## Properties
9 |
10 | | Property | Attribute | Description | Type | Default |
11 | | --------- | --------- | ----------- | ---------- | -------------------------- |
12 | | `variant` | `variant` | | `"simple"` | `'simple'` |
13 | | `year` | `year` | | `number` | `new Date().getFullYear()` |
14 |
15 |
16 | ----------------------------------------------
17 |
18 | *Built with love!*
19 |
--------------------------------------------------------------------------------
/src/components/application/header/header-action/header-action.scss:
--------------------------------------------------------------------------------
1 | @import "../../../../globalStyles/commons";
2 |
3 | :host {
4 | display: block;
5 | height: var(--goat-header-height)
6 | }
7 |
8 | .header-action {
9 | --goat-button-padding: .75rem;
10 | margin-inline-end: .5rem;
11 | --goat-button-height: 100%;
12 | --goat-button-border-radius: 0;
13 | }
14 |
15 | :host-context(goat-header[float]) {
16 | height: calc(var(--goat-header-height) - 2px);
17 | }
18 |
19 | :host-context(:not(goat-header[float])) .header-action {
20 | margin-inline-end: 0;
21 | }
22 |
--------------------------------------------------------------------------------
/src/components/application/sidenav-menu/sidenav-menu.scss:
--------------------------------------------------------------------------------
1 | @import "../../../globalStyles/commons";
2 |
3 | :host {
4 | display: inline-block;
5 | --list-border-radius: var(--border-radius);
6 | --goat-menu-max-height: inherit;
7 | }
8 |
9 |
10 | .menu {
11 | background-color: var(--field-02);
12 | padding: var(--spacing-02) 0;
13 | border: 1px solid v(--color-neutral-200);
14 | box-sizing: border-box;
15 | border-radius: var(--list-border-radius);
16 | box-shadow: var(--shadow-sm);
17 | }
18 |
--------------------------------------------------------------------------------
/src/components/application/sidenav/readme.md:
--------------------------------------------------------------------------------
1 | # goat-menu
2 |
3 |
4 |
5 |
6 |
7 |
8 | ## Properties
9 |
10 | | Property | Attribute | Description | Type | Default |
11 | | ------------ | ------------- | ----------- | --------- | ------- |
12 | | `showLoader` | `show-loader` | | `boolean` | `false` |
13 |
14 |
15 | ----------------------------------------------
16 |
17 | *Built with love!*
18 |
--------------------------------------------------------------------------------
/src/components/application/sidenav/sidenav.scss:
--------------------------------------------------------------------------------
1 | @import "../../../globalStyles/commons";
2 |
3 | :host {
4 | display: block;
5 | }
6 |
7 |
8 | .sidenav {
9 | width: 16rem;
10 | background: var(--background);
11 | }
12 |
--------------------------------------------------------------------------------
/src/components/application/sidenav/sidenav.tsx:
--------------------------------------------------------------------------------
1 | import { Component, ComponentInterface, Element, h, Prop } from '@stencil/core';
2 |
3 | /**
4 | * @name1 Side Navigation
5 | * @description1 The side navigation component provides an easy way to navigate through your website / application.
6 | * @img1 /assets/img/sidenav.webp
7 | */
8 | @Component({
9 | tag: 'goat-sidenav',
10 | styleUrl: 'sidenav.scss',
11 | shadow: true,
12 | })
13 | export class Sidenav implements ComponentInterface {
14 | @Element() elm!: HTMLElement;
15 |
16 | @Prop() showLoader: boolean = false;
17 |
18 | componentWillLoad() {}
19 |
20 | render() {
21 | return (
22 |
23 |
24 |
25 | );
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/src/components/avatar/avatar.scss:
--------------------------------------------------------------------------------
1 | @import "../../globalStyles/commons";
2 |
3 | :host {
4 | display: inline-block;
5 | pointer-events: none;
6 | }
7 |
8 | .avatar-container {
9 | display: flex;
10 | align-items: center;
11 | gap: v(--spacing-02);
12 | line-height: 0;
13 | }
14 |
15 | .avatar {
16 | border-radius: 50%;
17 | display: flex;
18 | justify-content: center;
19 | align-items: center;
20 | overflow: hidden;
21 | color: v(--field-01);
22 |
23 | .image {
24 | width: 100%;
25 | height: 100%;
26 | }
27 |
28 | @include font-style(text-md);
29 | }
30 |
31 | :host(.square) {
32 | .avatar {
33 | border-radius: 10px;
34 | }
35 | }
36 |
37 | .avatar.avatar-initials {
38 | background: var(--avatar-bg-color, v(--color-brand-primary));
39 | }
40 |
41 | .avatar.avatar-image {
42 | background: v(--color-brand-primary-30);
43 | }
44 |
45 | :host(.inverted) {
46 | .avatar {
47 | color: v(--color-brand-primary);
48 | }
49 |
50 | .avatar.avatar-initials {
51 | background: var(--avatar-bg-color, v(--color-white));
52 | }
53 |
54 | }
55 |
--------------------------------------------------------------------------------
/src/components/avatar/readme.md:
--------------------------------------------------------------------------------
1 | # goat-avatar
2 |
3 |
4 |
5 |
6 |
7 |
8 | ## Properties
9 |
10 | | Property | Attribute | Description | Type | Default |
11 | | -------- | --------- | ------------ | -------- | -------- |
12 | | `name` | `name` | | `string` | `''` |
13 | | `size` | `size` | Avatar size. | `string` | `'2rem'` |
14 | | `src` | `src` | | `string` | `''` |
15 |
16 |
17 | ----------------------------------------------
18 |
19 | *Built with love!*
20 |
--------------------------------------------------------------------------------
/src/components/badge/badge.scss:
--------------------------------------------------------------------------------
1 | @import "../../globalStyles/commons";
2 |
3 | :host {
4 | display: inline-block;
5 | }
6 |
7 | .badge {
8 | position: relative;
9 | }
10 |
11 | .badge-content {
12 | position: absolute;
13 | z-index: v(--z-index-badge);
14 | color: v(--color-white);
15 | display: flex;
16 | justify-content: center;
17 | align-items: center;
18 | background-color: var(--badge-color, v(--color-neutral));
19 | border-radius: 12px;
20 | padding: v(--spacing-01) var(--spacing-02);
21 | @include font-style(code-01);
22 |
23 | &.has-content {
24 | top: var(--badge-top, -0.5rem);
25 | right: var(--badge-left, -0.5rem);
26 | height: 1.25rem;
27 | min-width: 1.25rem;
28 | }
29 |
30 | &:not(.has-content) {
31 | top: var(--badge-top, -0.25rem);
32 | right: var(--badge-left, -0.25rem);
33 | height: 0.5rem;
34 | min-width: 0.5rem;
35 | }
36 | }
37 |
38 |
39 | @each $state in [success, warning, error] {
40 | .badge.color-#{$state} {
41 | .badge-content {
42 | background-color: var(--support-#{$state});
43 | }
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/src/components/badge/badge.tsx:
--------------------------------------------------------------------------------
1 | import { Component, h, Host, Prop } from '@stencil/core';
2 |
3 | /**
4 | * @name Badge
5 | * @description The badge component is used to display a small amount of information to the user.
6 | * @category Informational
7 | * @tag content
8 | * @example
9 | */
10 | @Component({
11 | tag: 'goat-badge',
12 | styleUrl: 'badge.scss',
13 | shadow: true,
14 | })
15 | export class Badge {
16 | @Prop() content: string;
17 |
18 | @Prop({ reflect: true }) color:
19 | | 'primary'
20 | | 'secondary'
21 | | 'success'
22 | | 'error'
23 | | 'warning' = 'error';
24 |
25 | render() {
26 | return (
27 |
28 |
29 |
35 | {this.content}
36 |
37 |
38 |
39 |
40 | );
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/src/components/badge/readme.md:
--------------------------------------------------------------------------------
1 | # goat-icon
2 |
3 |
4 |
5 |
6 |
7 |
8 | ## Properties
9 |
10 | | Property | Attribute | Description | Type | Default |
11 | | --------- | --------- | ----------- | --------------------------------------------------------------- | ----------- |
12 | | `color` | `color` | | `"error" \| "primary" \| "secondary" \| "success" \| "warning"` | `'error'` |
13 | | `content` | `content` | | `string` | `undefined` |
14 |
15 |
16 | ----------------------------------------------
17 |
18 | *Built with love!*
19 |
--------------------------------------------------------------------------------
/src/components/breadcrumb/breadcrumb-item/breadcrumb-item.scss:
--------------------------------------------------------------------------------
1 | @import "../../../globalStyles/commons";
2 |
3 |
--------------------------------------------------------------------------------
/src/components/breadcrumb/breadcrumb.scss:
--------------------------------------------------------------------------------
1 | @import "../../globalStyles/commons";
2 |
3 | :host {
4 | display: block;
5 | margin-bottom: v(--spacing-02);
6 | }
7 |
8 | .breadcrumb {
9 | display: flex;
10 | align-items: center;
11 | }
12 |
13 | slot::slotted(*) {
14 | &::before {
15 | display: inline-block;
16 | padding-right: v(--spacing-03);
17 | padding-left: v(--spacing-03);
18 | color: v(--border-strong-01);
19 | content: "/";
20 | }
21 | }
22 |
23 | slot::slotted(*:first-child) {
24 | &::before {
25 | display: none;
26 | }
27 | }
28 |
29 |
--------------------------------------------------------------------------------
/src/components/breadcrumb/breadcrumb.tsx:
--------------------------------------------------------------------------------
1 | import { Component, ComponentInterface, Element, h, Host } from '@stencil/core';
2 |
3 | /**
4 | * @name Breadcrumb
5 | * @description A breadcrumb is a secondary navigation scheme that reveals the user's location in a website or web application.
6 | * @category Navigation
7 | * @tags navigation
8 | * @example HomePage
9 | */
10 | @Component({
11 | tag: 'goat-breadcrumb',
12 | styleUrl: 'breadcrumb.scss',
13 | shadow: true,
14 | })
15 | export class Breadcrumb implements ComponentInterface {
16 | @Element() elm!: HTMLElement;
17 |
18 | componentWillLoad() {
19 | this.elm.querySelectorAll('goat-breadcrumb-item').forEach((item, i) => {
20 | item.position = i + 1 + '';
21 | });
22 | }
23 |
24 | render() {
25 | return (
26 |
27 |
28 |
29 |
30 |
31 | );
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/src/components/breadcrumb/readme.md:
--------------------------------------------------------------------------------
1 | # goat-heading
2 |
3 |
4 |
5 |
6 |
7 |
8 | ----------------------------------------------
9 |
10 | *Built with love!*
11 |
--------------------------------------------------------------------------------
/src/components/button/button-group/button-group.scss:
--------------------------------------------------------------------------------
1 | @import "../../../globalStyles/commons";
2 |
3 | $border-width: 0.0625rem;
4 |
5 | :host .button-group {
6 | display: flex;
7 |
8 | slot::slotted(goat-button) {
9 | display: block;
10 | margin: 0;
11 | --goat-button-border-width: #{$border-width} 0 #{$border-width} #{$border-width};
12 | --goat-button-border-radius: 0;
13 | }
14 |
15 | slot::slotted(goat-button:first-child) {
16 | --goat-button-border-radius: #{v(--border-radius)} 0 0 #{v(--border-radius)};
17 | }
18 |
19 | slot::slotted(goat-button:last-child) {
20 | --goat-button-border-width: #{$border-width};
21 | --goat-button-border-radius: 0 #{v(--border-radius)} #{v(--border-radius)} 0;
22 | }
23 |
24 | slot::slotted(goat-button:only-child) {
25 | --goat-button-border-radius: #{v(--border-radius)};
26 | --goat-button-border-width: #{$border-width};
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/components/button/button-group/button-group.tsx:
--------------------------------------------------------------------------------
1 | import { Component, ComponentInterface, h, Host } from '@stencil/core';
2 |
3 | /**
4 | * @name Button Group
5 | * @description Group a series of buttons together on a single line with the button group, and super-power.
6 | * @category General
7 | * @tags controls
8 | * @example
9 | *
10 | *
11 | *
12 | */
13 | @Component({
14 | tag: 'goat-button-group',
15 | styleUrl: 'button-group.scss',
16 | shadow: true,
17 | })
18 | export class ButtonGroup implements ComponentInterface {
19 |
20 |
21 | render() {
22 | return (
23 |
24 |
25 |
26 | );
27 | }
28 |
29 | }
30 |
--------------------------------------------------------------------------------
/src/components/button/button-group/readme.md:
--------------------------------------------------------------------------------
1 | # goat-button-group
2 |
3 |
4 |
5 |
6 |
7 |
8 | ## Dependencies
9 |
10 | ### Used by
11 |
12 | - [goat-flow-designer](../../application/flow-designer/flow-designer)
13 |
14 | ### Graph
15 | ```mermaid
16 | graph TD;
17 | goat-flow-designer --> goat-button-group
18 | style goat-button-group fill:#f9f,stroke:#333,stroke-width:4px
19 | ```
20 |
21 | ----------------------------------------------
22 |
23 | *Built with love!*
24 |
--------------------------------------------------------------------------------
/src/components/button/button/button.spec.tsx:
--------------------------------------------------------------------------------
1 | import { newSpecPage } from '@stencil/core/testing';
2 | import { Button } from './button';
3 |
4 | describe('button', () => {
5 | it('renders', async () => {
6 | const page = await newSpecPage({
7 | components: [Button],
8 | html: '',
9 | });
10 | expect(page.root).toEqualHtml(`
11 |
12 |
13 |
21 |
22 |
23 | `);
24 | });
25 | });
26 |
--------------------------------------------------------------------------------
/src/components/card/card.scss:
--------------------------------------------------------------------------------
1 | @import "../../globalStyles/commons";
2 |
3 | :host {
4 | display: block;
5 | padding-bottom: v(--spacing-03);
6 | }
7 |
8 | .card {
9 | display: flex;
10 | flex-direction: column;
11 | border: 1px solid v(--border-subtle);
12 | border-radius: v(--border-radius);
13 | height: 100%;
14 | background-color: v(--background);
15 | }
16 |
17 | :host([shadow-level="xxl"]) .card {
18 | box-shadow: v(--shadow-xl);
19 | }
20 |
21 | :host([shadow-level="xl"]) .card {
22 | box-shadow: v(--shadow-xl);
23 | }
24 |
25 | :host([shadow-level="lg"]) .card {
26 | box-shadow: v(--shadow-xl);
27 | }
28 |
29 | :host([shadow-level="md"]) .card {
30 | box-shadow: v(--shadow-xl);
31 | }
32 |
33 | :host([shadow-level="sm"]) .card {
34 | box-shadow: v(--shadow-xl);
35 | }
36 |
37 |
38 | :host([shadow-level="xs"]) .card {
39 | box-shadow: v(--shadow-xl);
40 | }
41 |
42 | slot::slotted(goat-card-content) {
43 | display: block;
44 | padding: 1rem;
45 | border-bottom: 1px solid v(--border-subtle);
46 | }
47 |
48 | slot::slotted(goat-card-content.no-padding) {
49 | padding: 0;
50 | }
51 |
52 | slot::slotted(goat-card-content:last-child) {
53 | border-bottom: none;
54 | flex: 1;
55 | }
56 |
--------------------------------------------------------------------------------
/src/components/card/card.tsx:
--------------------------------------------------------------------------------
1 | import { Component, h, Host, Prop } from '@stencil/core';
2 |
3 |
4 | @Component({
5 | tag: 'goat-card',
6 | styleUrl: 'card.scss',
7 | shadow: true,
8 | })
9 | export class Card {
10 |
11 |
12 | @Prop() shadowLevel: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl' | undefined;
13 |
14 | render() {
15 | return (
16 |
17 |
18 |
19 |
20 |
21 | );
22 | }
23 |
24 | }
25 |
--------------------------------------------------------------------------------
/src/components/card/readme.md:
--------------------------------------------------------------------------------
1 | # goat-heading
2 |
3 |
4 |
5 |
6 |
7 |
8 | ## Properties
9 |
10 | | Property | Attribute | Description | Type | Default |
11 | | ------------- | -------------- | ----------- | ----------------------------------------------- | ----------- |
12 | | `shadowLevel` | `shadow-level` | | `"lg" \| "md" \| "sm" \| "xl" \| "xs" \| "xxl"` | `undefined` |
13 |
14 |
15 | ----------------------------------------------
16 |
17 | *Built with love!*
18 |
--------------------------------------------------------------------------------
/src/components/charts/chart-colors.ts:
--------------------------------------------------------------------------------
1 | export type ChartColor = {
2 | color: string;
3 | hoverColor: string;
4 | };
5 |
6 | export function convertToHex(colorName: string): string {
7 | const computed = getComputedStyle(document.documentElement).getPropertyValue(
8 | colorName,
9 | );
10 | return computed ? computed : colorName;
11 | }
12 |
13 | export const chartColors: ChartColor[] = [
14 | {
15 | color: 'var(--color-purple-70)',
16 | hoverColor: 'var(--color-purple-80)',
17 | },
18 | {
19 | color: 'var(--color-cyan-50)',
20 | hoverColor: 'var(--color-cyan-60)',
21 | },
22 | {
23 | color: 'var(--color-teal-60)',
24 | hoverColor: 'var(--color-teal-70)',
25 | },
26 | {
27 | color: 'var(--color-magenta-70)',
28 | hoverColor: 'var(--color-magenta-80)',
29 | },
30 | ];
31 |
--------------------------------------------------------------------------------
/src/components/charts/chart-doughnut/chart-doughnut.scss:
--------------------------------------------------------------------------------
1 | @import "../../../globalStyles/commons";
2 | @import "../pie/pie";
3 |
4 | :host {
5 | display: inline-block;
6 | }
7 |
8 | .title {
9 | font-size:v(--heading-03-font-size);
10 | font-weight: 600;
11 | line-height:v(--heading-03-line-height);
12 | letter-spacing: v(--heading-03-letter-spacing);
13 | fill: v(--text-primary);
14 | }
15 |
16 | .label {
17 | font-size: v(--heading-02-font-size);
18 | line-height: v(--heading-02-line-height);
19 | letter-spacing: v(--heading-02-letter-spacing);
20 | fill: v(--text-primary);
21 | }
22 |
23 | .item-polyline {
24 | fill: none;
25 | stroke-width: 1;
26 | stroke: v(--text-primary);
27 | }
28 |
29 | .item-label {
30 | fill: v(--text-primary);
31 | font-size: v(--label-01-font-size);
32 | font-weight: v(--label-01-font-weight);
33 | line-height: v(--label-01-line-height);
34 | letter-spacing: v(--label-01-letter-spacing);
35 | }
36 |
--------------------------------------------------------------------------------
/src/components/charts/chart-doughnut/readme.md:
--------------------------------------------------------------------------------
1 | # goat-heading
2 |
3 |
4 |
5 |
6 |
7 |
8 | ## Properties
9 |
10 | | Property | Attribute | Description | Type | Default |
11 | | ------------ | ------------- | ----------- | --------- | ----------- |
12 | | `data` | `data` | | `any` | `[]` |
13 | | `label` | `label` | | `string` | `undefined` |
14 | | `margin` | `margin` | | `number` | `10` |
15 | | `showLabels` | `show-labels` | | `boolean` | `true` |
16 | | `width` | `width` | | `number` | `0` |
17 |
18 |
19 | ----------------------------------------------
20 |
21 | *Built with love!*
22 |
--------------------------------------------------------------------------------
/src/components/charts/chart-pie/chart-pie.scss:
--------------------------------------------------------------------------------
1 | @import "../../../globalStyles/commons";
2 | @import "../pie/pie";
3 |
4 | :host {
5 | display: inline-block;
6 | }
7 |
8 |
--------------------------------------------------------------------------------
/src/components/charts/chart-pie/readme.md:
--------------------------------------------------------------------------------
1 | # goat-heading
2 |
3 |
4 |
5 |
6 |
7 |
8 | ## Properties
9 |
10 | | Property | Attribute | Description | Type | Default |
11 | | ------------ | ------------- | ----------- | --------- | ----------- |
12 | | `data` | `data` | | `any` | `[]` |
13 | | `label` | `label` | | `string` | `undefined` |
14 | | `margin` | `margin` | | `number` | `10` |
15 | | `showLabels` | `show-labels` | | `boolean` | `true` |
16 | | `width` | `width` | | `number` | `0` |
17 |
18 |
19 | ----------------------------------------------
20 |
21 | *Built with love!*
22 |
--------------------------------------------------------------------------------
/src/components/charts/pie/pie.scss:
--------------------------------------------------------------------------------
1 | @import "../../../globalStyles/commons";
2 |
3 | .arc-container path {
4 | stroke: v(--color-light);
5 | stroke-width: 2px;
6 | transition: all 0.1s ease-out;
7 | }
8 |
9 | .item-polyline {
10 | fill: none;
11 | stroke-width: 1;
12 | stroke: v(--text-primary);
13 | }
14 |
15 | .title, .label {
16 | fill: v(--text-primary);
17 | @include font-style(text-md);
18 | }
19 |
20 | .item-label {
21 | fill: v(--text-primary);
22 | font-size: v(--label-01-font-size);
23 | font-weight: v(--label-01-font-weight);
24 | line-height: v(--label-01-line-height);
25 | letter-spacing: v(--label-01-letter-spacing);
26 | }
27 |
--------------------------------------------------------------------------------
/src/components/charts/pie/pie.ts:
--------------------------------------------------------------------------------
1 | import { chartColors } from '../chart-colors';
2 |
3 | export type PieItem = {
4 | name: string;
5 | value: number;
6 | };
7 |
8 | export function getColorScale(data: PieItem[]) {
9 | const d3 = window['d3'];
10 | return d3
11 | .scaleOrdinal()
12 | .domain(data.map(d => d.name))
13 | .range(chartColors);
14 | }
15 |
16 | export function getPieData(data: PieItem[]) {
17 | const d3 = window['d3'];
18 |
19 | // Compute the position of each group on the pie:
20 | const pie = d3
21 | .pie()
22 | .sort(null) // Do not sort group by size
23 | .value(d => d.value);
24 | return pie(data);
25 | }
26 |
--------------------------------------------------------------------------------
/src/components/container/container.tsx:
--------------------------------------------------------------------------------
1 | import {
2 | Component,
3 | ComponentInterface,
4 | Element,
5 | h,
6 | Host,
7 | Prop,
8 | } from '@stencil/core';
9 |
10 | @Component({
11 | tag: 'goat-container',
12 | styleUrl: 'container.scss',
13 | shadow: true,
14 | })
15 | export class Container implements ComponentInterface {
16 | @Element() host!: HTMLElement;
17 |
18 | @Prop({ reflect: true })
19 | size: 'max' | 'xl' | 'lg' | 'md' | 'sm' | 'full' = 'full';
20 |
21 | render() {
22 | return (
23 |
24 |
36 |
37 | );
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/src/components/container/readme.md:
--------------------------------------------------------------------------------
1 | # goat-heading
2 |
3 |
4 |
5 |
6 |
7 |
8 | ## Properties
9 |
10 | | Property | Attribute | Description | Type | Default |
11 | | -------- | --------- | ----------- | ------------------------------------------------- | -------- |
12 | | `size` | `size` | | `"full" \| "lg" \| "max" \| "md" \| "sm" \| "xl"` | `'full'` |
13 |
14 |
15 | ----------------------------------------------
16 |
17 | *Built with love!*
18 |
--------------------------------------------------------------------------------
/src/components/divider/divider.tsx:
--------------------------------------------------------------------------------
1 | import { Component, ComponentInterface, Element, h, Host, Prop, State } from '@stencil/core';
2 |
3 | /**
4 | * @name Divider
5 | * @description A divider can be used to segment content vertically or horizontally.
6 | * @category Layout
7 | * @example or
8 | */
9 | @Component({
10 | tag: 'goat-divider',
11 | styleUrl: 'divider.scss',
12 | shadow: true,
13 | })
14 | export class Divider implements ComponentInterface {
15 |
16 |
17 | @Prop({reflect: true}) vertical: boolean = false;
18 |
19 | @State() slotHasContent = false;
20 | @Element() elm!: HTMLElement;
21 |
22 | componentWillLoad() {
23 | this.slotHasContent = this.elm.hasChildNodes();
24 | }
25 |
26 | render() {
27 | return (
28 |
29 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 | );
42 | }
43 |
44 |
45 | }
46 |
--------------------------------------------------------------------------------
/src/components/divider/readme.md:
--------------------------------------------------------------------------------
1 | # goat-heading
2 |
3 |
4 |
5 |
6 |
7 |
8 | ## Properties
9 |
10 | | Property | Attribute | Description | Type | Default |
11 | | ---------- | ---------- | ----------- | --------- | ------- |
12 | | `vertical` | `vertical` | | `boolean` | `false` |
13 |
14 |
15 | ## CSS Custom Properties
16 |
17 | | Name | Description |
18 | | ------------------------ | ---------------------- |
19 | | `--goat-divider-color` | Color of the divider |
20 | | `--goat-divider-padding` | Padding of the divider |
21 |
22 |
23 | ## Dependencies
24 |
25 | ### Used by
26 |
27 | - [goat-header-brand](../application/header/header-brand)
28 |
29 | ### Graph
30 | ```mermaid
31 | graph TD;
32 | goat-header-brand --> goat-divider
33 | style goat-divider fill:#f9f,stroke:#333,stroke-width:4px
34 | ```
35 |
36 | ----------------------------------------------
37 |
38 | *Built with love!*
39 |
--------------------------------------------------------------------------------
/src/components/dropdown/dropdown-menu/dropdown-menu.scss:
--------------------------------------------------------------------------------
1 | @import "../../../globalStyles/commons";
2 |
3 | :host {
4 | display: inline-block;
5 | transform: scale(0);
6 | top: 0;
7 | left: 0;
8 | position: absolute;
9 | pointer-events: none;
10 | transition: transform 0.1s ease-out 0s;
11 | z-index: v(--z-index-popover);
12 |
13 | --popover-content-shadow: none;
14 |
15 | /**
16 | * @prop --goat-dropdown-menu-max-height: Maximum height of the menu
17 | */
18 | --goat-dropdown-menu-max-height: 100%;
19 |
20 | min-width: 10rem;
21 | line-height: 0;
22 | }
23 |
24 |
25 | :host-context(goat-dropdown[open]) {
26 | pointer-events: auto;
27 | transform: scale(1);
28 | }
29 |
30 | .dropdown-content {
31 | --goat-menu-max-height: var(--goat-dropdown-menu-max-height);
32 | position: relative;
33 | width: 100%;
34 | filter: var(--popover-content-shadow, none);
35 | --goat-menu-shadow: none;
36 | }
37 |
38 |
--------------------------------------------------------------------------------
/src/components/dropdown/dropdown-menu/dropdown-menu.tsx:
--------------------------------------------------------------------------------
1 | import {
2 | Component,
3 | ComponentInterface,
4 | Element,
5 | h,
6 | Host,
7 | Method,
8 | } from '@stencil/core';
9 | import { getComponentIndex } from '../../../utils/utils';
10 |
11 | /**
12 | * @name Dropdown Menu
13 | * @description The Dropdown Menu component is used to display a list of options.
14 | * @category Navigation
15 | * @subcategory Dropdown
16 | * @childComponent true
17 | */
18 | @Component({
19 | tag: 'goat-dropdown-menu',
20 | styleUrl: 'dropdown-menu.scss',
21 | shadow: true,
22 | })
23 | export class DropdownMenu implements ComponentInterface {
24 | @Element() host!: HTMLElement;
25 |
26 | gid: string = getComponentIndex();
27 | menuRef: HTMLGoatMenuElement;
28 |
29 | /**
30 | * Sets focus on first menu item. Use this method instead of the global
31 | * `element.focus()`.
32 | */
33 | @Method()
34 | async setFocus() {
35 | await this.menuRef.setFocus();
36 | }
37 |
38 | render() {
39 | return (
40 |
41 | (this.menuRef = elm)}>
42 |
43 |
44 |
45 | );
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/src/components/dropdown/dropdown-menu/readme.md:
--------------------------------------------------------------------------------
1 | # goat-dropdown
2 |
3 |
4 |
5 |
6 |
7 |
8 | ## Methods
9 |
10 | ### `setFocus() => Promise`
11 |
12 | Sets focus on first menu item. Use this method instead of the global
13 | `element.focus()`.
14 |
15 | #### Returns
16 |
17 | Type: `Promise`
18 |
19 |
20 |
21 |
22 | ## CSS Custom Properties
23 |
24 | | Name | Description |
25 | | --------------------------------- | -------------------------- |
26 | | `--goat-dropdown-menu-max-height` | Maximum height of the menu |
27 |
28 |
29 | ## Dependencies
30 |
31 | ### Depends on
32 |
33 | - [goat-menu](../../menu/menu)
34 |
35 | ### Graph
36 | ```mermaid
37 | graph TD;
38 | goat-dropdown-menu --> goat-menu
39 | goat-menu --> goat-empty-state
40 | goat-empty-state --> goat-svg
41 | goat-empty-state --> goat-button
42 | goat-button --> goat-spinner
43 | goat-button --> goat-icon
44 | style goat-dropdown-menu fill:#f9f,stroke:#333,stroke-width:4px
45 | ```
46 |
47 | ----------------------------------------------
48 |
49 | *Built with love!*
50 |
--------------------------------------------------------------------------------
/src/components/dropdown/dropdown/dropdown.scss:
--------------------------------------------------------------------------------
1 | @import "../../../globalStyles/commons";
2 |
3 | :host {
4 | display: inline-block;
5 | --dropdown-height: inherit;
6 | height: var(--dropdown-height);
7 | }
8 |
9 | .dropdown {
10 | display: inline-block;
11 | height: var(--dropdown-height);
12 |
13 | goat-menu {
14 | --goat-menu-shadow: none;
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/components/icon/constants.ts:
--------------------------------------------------------------------------------
1 | export const ICON_BASE_URL = 'https://cdn.jsdelivr.net/npm/@carbon/icons@11.41.0';
2 |
--------------------------------------------------------------------------------
/src/components/icon/datasource.ts:
--------------------------------------------------------------------------------
1 | import icons from './icons';
2 | import { ICON_BASE_URL } from './constants';
3 | import { getAssetPath } from '@stencil/core';
4 | import { createCacheFetch } from '../../utils/utils';
5 |
6 | export async function fetchIcon(name: string) {
7 | if (!name) return '';
8 |
9 | const cacheFetch = await createCacheFetch('goat-icons');
10 |
11 | const icon = icons.find((icon: any) => icon.name === name);
12 |
13 | if (!icon) return '';
14 |
15 | let iconBaseUrl: string;
16 | if (process.env.THIRD_PARTY_ASSETS == 'LOCAL') {
17 | iconBaseUrl = getAssetPath('./assets/node_modules/@carbon/icons');
18 | } else {
19 | iconBaseUrl = ICON_BASE_URL;
20 | }
21 |
22 | return await cacheFetch(`${iconBaseUrl}/svg/${icon.path}`);
23 | }
24 |
--------------------------------------------------------------------------------
/src/components/icon/icon.scss:
--------------------------------------------------------------------------------
1 | @import "../../globalStyles/commons";
2 |
3 | :host {
4 | display: inline-block;
5 | line-height: 0;
6 | }
7 |
8 | .icon {
9 | display: block;
10 | line-height: 0;
11 |
12 | /**
13 | * @prop --goat-icon-size - The size of the icon (height and width)
14 | */
15 | height: var(--goat-icon-size, 1rem);
16 | width: var(--goat-icon-size, 1rem);
17 |
18 | svg {
19 | fill: currentColor;
20 | height: 100%;
21 | width: 100%;
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/components/image/image.scss:
--------------------------------------------------------------------------------
1 | @import "../../globalStyles/commons";
2 |
3 | :host {
4 | display: contents;
5 | }
6 |
7 | img {
8 | max-height: 100%;
9 | max-width: 100%;
10 | }
11 |
--------------------------------------------------------------------------------
/src/components/image/image.tsx:
--------------------------------------------------------------------------------
1 | import { Component, h, Host, Prop, State } from '@stencil/core';
2 | import { isDarkMode, observeThemeChange } from '../../utils/utils';
3 |
4 | @Component({
5 | tag: 'goat-image',
6 | styleUrl: 'image.scss',
7 | shadow: true,
8 | })
9 | export class Image {
10 | @Prop({ reflect: true }) src: string;
11 |
12 | @Prop({ reflect: true }) darkSrc: string;
13 |
14 | @Prop() imageTitle: string;
15 |
16 | @State() isDarkMode: boolean = isDarkMode();
17 |
18 | componentWillLoad() {
19 | observeThemeChange(() => {
20 | this.isDarkMode = isDarkMode();
21 | });
22 | }
23 |
24 | render() {
25 | if (this.isDarkMode && this.darkSrc) {
26 | return (
27 |
28 |
29 |
30 | );
31 | } else {
32 | return (
33 |
34 |
35 |
36 | );
37 | }
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/src/components/image/readme.md:
--------------------------------------------------------------------------------
1 | # goat-icon
2 |
3 |
4 |
5 |
6 |
7 |
8 | ## Properties
9 |
10 | | Property | Attribute | Description | Type | Default |
11 | | ------------ | ------------- | ----------- | -------- | ----------- |
12 | | `darkSrc` | `dark-src` | | `string` | `undefined` |
13 | | `imageTitle` | `image-title` | | `string` | `undefined` |
14 | | `src` | `src` | | `string` | `undefined` |
15 |
16 |
17 | ----------------------------------------------
18 |
19 | *Built with love!*
20 |
--------------------------------------------------------------------------------
/src/components/input-controls/data-and-time/date/date-picker/date-picker.scss:
--------------------------------------------------------------------------------
1 | @import "../../../common-input";
2 |
3 | input[type="date"]::-webkit-inner-spin-button,
4 | input[type="date"]::-webkit-calendar-picker-indicator {
5 | display: none;
6 | -webkit-appearance: none;
7 | }
8 |
--------------------------------------------------------------------------------
/src/components/input-controls/data-and-time/date/time-picker/time-picker.scss:
--------------------------------------------------------------------------------
1 | @import "../../../common-input";
2 |
3 | input[type="time"]::-webkit-inner-spin-button,
4 | input[type="time"]::-webkit-calendar-picker-indicator {
5 | display: none;
6 | -webkit-appearance: none;
7 | }
8 |
--------------------------------------------------------------------------------
/src/components/input-controls/form-control/form-control.scss:
--------------------------------------------------------------------------------
1 | @import "../common-input";
2 |
3 |
4 | :host(.form-field) {
5 | margin-bottom: v(--spacing-07);
6 | }
7 |
--------------------------------------------------------------------------------
/src/components/input-controls/input.interface.tsx:
--------------------------------------------------------------------------------
1 | interface InputComponentInterface {
2 |
3 | required?: boolean;
4 | disabled?: boolean;
5 | name: string;
6 |
7 | getComponentId(): Promise;
8 | setFocus(): void;
9 | setBlur(): void;
10 | }
11 |
--------------------------------------------------------------------------------
/src/components/input-controls/input/input/input.scss:
--------------------------------------------------------------------------------
1 | @import "../../common-input";
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/src/components/input-controls/input/number/number.scss:
--------------------------------------------------------------------------------
1 | @import "../../common-input";
2 |
--------------------------------------------------------------------------------
/src/components/input-controls/input/textarea/textarea.scss:
--------------------------------------------------------------------------------
1 | @import "../../common-input";
2 |
3 | :host {
4 | --goat-textarea-height: 2.5rem;
5 | }
6 |
7 | .textarea {
8 | height: 100%;
9 | position: relative;
10 | align-items: flex-start;
11 |
12 | .input-native {
13 | height: 100%;
14 | min-height: var(--goat-textarea-height);
15 | resize: vertical;
16 | padding:v(--spacing-05);
17 | }
18 | }
19 |
20 | .actions-container {
21 | position: absolute;
22 | right: 1rem;
23 | top: 0.5rem;
24 |
25 | goat-button {
26 | --goat-button-height: 2rem;
27 | }
28 | }
29 |
30 | :host([size=md]) .input-container {
31 | height: 100%;
32 | min-height: var(--goat-textarea-height);
33 | }
34 |
35 |
36 |
--------------------------------------------------------------------------------
/src/components/link/link.scss:
--------------------------------------------------------------------------------
1 | @import "../../globalStyles/commons";
2 |
3 |
4 | :host {
5 | display: inline-block;
6 | }
7 |
8 | .link {
9 | height: 100%;
10 | border-radius: var(--border-radius);
11 | display: flex;
12 | align-items: center;
13 | flex-direction: row;
14 | cursor: pointer;
15 | text-decoration: var(--link-decoration, none);
16 |
17 | color: var(--link-color, var(--link-01));
18 |
19 | &:hover {
20 | color: var(--link-color-hover, var(--hover-primary-text));
21 | text-decoration: var(--link-decoration-hover, underline);
22 | }
23 |
24 | &:visited {
25 | color: var(--link-color-visited, var(--visited-link));
26 | }
27 |
28 | &.active {
29 | color: var(--link-color-active, var(--text-primary));
30 | }
31 |
32 |
33 | }
34 |
35 | :host(.no-style) .link {
36 | color: inherit !important;
37 | text-decoration: none !important;
38 | }
39 |
40 | :host(.no-decoration) .link {
41 | text-decoration: none !important;
42 | }
43 |
44 | :host(.inline) .link {
45 | text-decoration: var(--link-decoration, underline);
46 | }
47 |
48 | .link.has-focus:not(.active) {
49 | text-decoration: none;
50 | @include focus-ring();
51 | }
52 |
--------------------------------------------------------------------------------
/src/components/menu/menu-divider/menu-divider.scss:
--------------------------------------------------------------------------------
1 | @import "../../../globalStyles/commons";
2 |
3 | :host {
4 | display: block;
5 | width: 100%;
6 | padding: v(--spacing-02) 0;
7 | }
8 |
9 | .divider {
10 | border-top: 1px solid v(--border-subtle);
11 | }
12 |
--------------------------------------------------------------------------------
/src/components/menu/menu-divider/menu-divider.tsx:
--------------------------------------------------------------------------------
1 | import { Component, ComponentInterface, h, Host } from '@stencil/core';
2 |
3 | /**
4 | * @name MenuDivider
5 | * @description A divider to separate menu items.
6 | * @category Layout
7 | * @subcategory Menu
8 | * @childComponents true
9 | * @example or
10 | */
11 | @Component({
12 | tag: 'goat-menu-divider',
13 | styleUrl: 'menu-divider.scss',
14 | shadow: true,
15 | })
16 | export class MenuDivider implements ComponentInterface {
17 | render() {
18 | return (
19 |
20 |
21 |
22 | );
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/components/menu/menu-divider/readme.md:
--------------------------------------------------------------------------------
1 | # goat-heading
2 |
3 |
4 |
5 |
6 |
7 |
8 | ----------------------------------------------
9 |
10 | *Built with love!*
11 |
--------------------------------------------------------------------------------
/src/components/menu/menu/menu.scss:
--------------------------------------------------------------------------------
1 | @import "../../../globalStyles/commons";
2 |
3 |
4 | :host {
5 | display: inline-block;
6 | /**
7 | * @prop --goat-menu-background: Background color of the menu
8 | */
9 | --goat-menu-background: var(--layer);
10 |
11 | /**
12 | * @prop --goat-menu-max-height: Maximum height of the menu
13 | */
14 | --goat-menu-max-height: 100%;
15 |
16 | /**
17 | * @prop --goat-menu-shadow: Shadow of the menu
18 | */
19 | --goat-menu-shadow: 0 2px 6px 0 rgba(0,0,0,.2);
20 |
21 | min-width: 10rem;
22 | }
23 |
24 | .menu {
25 | background: var(--goat-menu-background);
26 | box-sizing: border-box;
27 | max-height: var(--goat-menu-max-height);
28 | overflow-x: auto;
29 | border: 1px solid #{v(--border-subtle)};
30 | box-shadow: var(--goat-menu-shadow);
31 | padding-block: v(--spacing-02);
32 | }
33 |
34 | :host(.no-border) .menu {
35 | border: none;
36 | box-shadow: none;
37 | }
38 |
--------------------------------------------------------------------------------
/src/components/modal/modal-content/modal-content.scss:
--------------------------------------------------------------------------------
1 | @import "../../../globalStyles/commons";
2 |
3 | :host {
4 | display: block;
5 | }
6 |
7 | :host([type='text']) .modal-content {
8 | padding: 0 20% 0 var(--spacing-05);
9 | }
10 |
11 | :host([type='default']) .modal-content {
12 | padding: 0 var(--spacing-05);
13 | }
14 |
--------------------------------------------------------------------------------
/src/components/modal/modal-content/modal-content.tsx:
--------------------------------------------------------------------------------
1 | import { Component, h, Host, Prop } from '@stencil/core';
2 |
3 | /**
4 | * @name Modal Content
5 | * @description The Modal Content component is used to display the content within a modal.
6 | * @category Informational
7 | * @subcategory Modal
8 | * @childComponent true
9 | */
10 | @Component({
11 | tag: 'goat-modal-content',
12 | styleUrl: 'modal-content.scss',
13 | shadow: true,
14 | })
15 | export class ModalContent {
16 | @Prop({ reflect: true }) type: 'text' | 'borderless' | 'default' = 'default';
17 |
18 | render() {
19 | return (
20 |
21 |
22 |
23 |
24 |
25 | );
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/src/components/modal/modal-content/readme.md:
--------------------------------------------------------------------------------
1 | # p4-modal
2 |
3 |
4 |
5 |
6 |
7 |
8 | ## Properties
9 |
10 | | Property | Attribute | Description | Type | Default |
11 | | -------- | --------- | ----------- | ------------------------------------- | ----------- |
12 | | `type` | `type` | | `"borderless" \| "default" \| "text"` | `'default'` |
13 |
14 |
15 | ----------------------------------------------
16 |
17 | *Built with love!*
18 |
--------------------------------------------------------------------------------
/src/components/notification-manager/readme.md:
--------------------------------------------------------------------------------
1 | # goat-alert
2 |
3 |
4 |
5 |
6 |
7 |
8 | ## Properties
9 |
10 | | Property | Attribute | Description | Type | Default |
11 | | ---------- | ---------- | ----------- | -------------------------------------------------------------- | ---------------- |
12 | | `name` | `name` | | `string` | `'global'` |
13 | | `position` | `position` | | `"bottom-left" \| "bottom-right" \| "top-left" \| "top-right"` | `'bottom-right'` |
14 |
15 |
16 | ## Dependencies
17 |
18 | ### Depends on
19 |
20 | - [goat-notification](../notification)
21 |
22 | ### Graph
23 | ```mermaid
24 | graph TD;
25 | goat-notification-manager --> goat-notification
26 | goat-notification --> goat-icon
27 | goat-notification --> goat-button
28 | goat-button --> goat-spinner
29 | goat-button --> goat-icon
30 | style goat-notification-manager fill:#f9f,stroke:#333,stroke-width:4px
31 | ```
32 |
33 | ----------------------------------------------
34 |
35 | *Built with love!*
36 |
--------------------------------------------------------------------------------
/src/components/popover/popover-content/popover-content.tsx:
--------------------------------------------------------------------------------
1 | import { Component, ComponentInterface, Element, h, Host } from '@stencil/core';
2 | import { getComponentIndex } from '../../../utils/utils';
3 |
4 | /**
5 | * @name Popover Content
6 | * @description The PopoverContent component is used to display additional information.
7 | * @category Informational
8 | * @subcategory Popover
9 | * @childComponent true
10 | */
11 | @Component({
12 | tag: 'goat-popover-content',
13 | styleUrl: 'popover-content.scss',
14 | shadow: true,
15 | })
16 | export class PopoverContent implements ComponentInterface {
17 | @Element() host!: HTMLElement;
18 |
19 | gid: string = getComponentIndex();
20 |
21 | render() {
22 | return (
23 |
24 |
29 |
30 | );
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/src/components/popover/popover-content/readme.md:
--------------------------------------------------------------------------------
1 | # goat-dropdown
2 |
3 |
4 |
5 |
6 |
7 |
8 | ## CSS Custom Properties
9 |
10 | | Name | Description |
11 | | --------------------------------- | --------------------------------------- |
12 | | `--goat-menu-shadow` | Shadow of popover content |
13 | | `--popover-content-background` | Background color of the popover content |
14 | | `--popover-content-border-radius` | Border radius of the popover content |
15 | | `--popover-padding` | Padding of the popover content |
16 |
17 |
18 | ## Dependencies
19 |
20 | ### Used by
21 |
22 | - [goat-tooltip](../../tooltip)
23 |
24 | ### Graph
25 | ```mermaid
26 | graph TD;
27 | goat-tooltip --> goat-popover-content
28 | style goat-popover-content fill:#f9f,stroke:#333,stroke-width:4px
29 | ```
30 |
31 | ----------------------------------------------
32 |
33 | *Built with love!*
34 |
--------------------------------------------------------------------------------
/src/components/popover/popover/popover.scss:
--------------------------------------------------------------------------------
1 | @import "../../../globalStyles/commons";
2 |
3 | :host {
4 | display: inline-block;
5 | --goat-popover-tiptab-padding: 0.5rem;
6 | --goat-popover-height: inherit;
7 | height: var(--goat-popover-height);
8 | }
9 |
10 | .popover {
11 | height: var(--goat-popover-height);
12 |
13 | &.tip-tab {
14 | padding: var(--goat-popover-tiptab-padding);
15 | line-height: 0;
16 | transition: background 0.1s ease-out 0s;
17 |
18 | &.open {
19 | background: var(--layer);
20 | }
21 | }
22 | }
23 |
24 |
--------------------------------------------------------------------------------
/src/components/popover/types.tsx:
--------------------------------------------------------------------------------
1 | export type PopoverTriggerType = 'click' | 'hover' | 'manual';
2 |
--------------------------------------------------------------------------------
/src/components/svg/datasource.ts:
--------------------------------------------------------------------------------
1 | import { createCacheFetch } from '../../utils/utils';
2 |
3 | export async function fetchSVG(url) {
4 | if (!url) return '';
5 |
6 | const cacheFetch = await createCacheFetch('goat-svg');
7 |
8 | return await cacheFetch(url);
9 | }
10 |
--------------------------------------------------------------------------------
/src/components/svg/readme.md:
--------------------------------------------------------------------------------
1 | # goat-icon
2 |
3 |
4 |
5 |
6 |
7 |
8 | ## Properties
9 |
10 | | Property | Attribute | Description | Type | Default |
11 | | -------- | --------- | -------------- | -------- | ----------- |
12 | | `size` | `size` | The Icon size. | `string` | `undefined` |
13 | | `src` | `src` | | `string` | `''` |
14 |
15 |
16 | ## Dependencies
17 |
18 | ### Used by
19 |
20 | - [goat-empty-state](../application/empty-state)
21 | - [goat-header-brand](../application/header/header-brand)
22 |
23 | ### Graph
24 | ```mermaid
25 | graph TD;
26 | goat-empty-state --> goat-svg
27 | goat-header-brand --> goat-svg
28 | style goat-svg fill:#f9f,stroke:#333,stroke-width:4px
29 | ```
30 |
31 | ----------------------------------------------
32 |
33 | *Built with love!*
34 |
--------------------------------------------------------------------------------
/src/components/svg/svg.scss:
--------------------------------------------------------------------------------
1 | @import "../../globalStyles/commons";
2 |
3 | :host {
4 | display: inline-block;
5 | }
6 |
7 | .icon {
8 | line-height: 0;
9 | height: 100%;
10 | width: 100%;
11 | }
12 |
13 | :host(:not([size])) svg {
14 | height: 100%;
15 | width: 100%;
16 | }
17 |
18 | :host(.inherit) .icon {
19 | color: inherit;
20 | }
21 |
--------------------------------------------------------------------------------
/src/components/tabs/tab-panel/readme.md:
--------------------------------------------------------------------------------
1 | # goat-tab
2 |
3 |
4 |
5 |
6 |
7 |
8 | ## Properties
9 |
10 | | Property | Attribute | Description | Type | Default |
11 | | -------- | --------- | ----------- | ------------------------------ | ----------- |
12 | | `active` | `active` | | `boolean` | `false` |
13 | | `layer` | `layer` | | `"01" \| "02" \| "background"` | `undefined` |
14 | | `value` | `value` | | `string` | `undefined` |
15 |
16 |
17 | ----------------------------------------------
18 |
19 | *Built with love!*
20 |
--------------------------------------------------------------------------------
/src/components/tabs/tab-panel/tab-panel.scss:
--------------------------------------------------------------------------------
1 | @import "../../../globalStyles/commons";
2 |
3 |
4 | :host {
5 | display: none;
6 | }
7 |
8 | :host([active]) {
9 | display: block;
10 | flex: 1;
11 | }
12 |
--------------------------------------------------------------------------------
/src/components/tabs/tab-panel/tab-panel.tsx:
--------------------------------------------------------------------------------
1 | import { Component, ComponentInterface, h, Host, Prop } from '@stencil/core';
2 |
3 | @Component({
4 | tag: 'goat-tab-panel',
5 | styleUrl: 'tab-panel.scss',
6 | shadow: true,
7 | })
8 | export class TabPanel implements ComponentInterface {
9 | @Prop({ reflect: true }) value: string;
10 |
11 | @Prop({ reflect: true }) active: boolean = false;
12 |
13 | @Prop({ reflect: true }) layer?: 'background' | '01' | '02';
14 |
15 | render() {
16 | return (
17 |
18 |
19 |
20 | );
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/components/tabs/tabs-list/readme.md:
--------------------------------------------------------------------------------
1 | # goat-tabs
2 |
3 |
4 |
5 |
6 |
7 |
8 | ## Properties
9 |
10 | | Property | Attribute | Description | Type | Default |
11 | | --------- | --------- | ----------- | ------------------------------------------------ | ----------- |
12 | | `managed` | `managed` | | `boolean` | `false` |
13 | | `type` | `type` | | `"contained" \| "contained-bottom" \| "default"` | `'default'` |
14 |
15 |
16 | ----------------------------------------------
17 |
18 | *Built with love!*
19 |
--------------------------------------------------------------------------------
/src/components/tabs/tabs-list/tabs-list.scss:
--------------------------------------------------------------------------------
1 | @import "../../../globalStyles/commons";
2 |
3 |
4 | .tabs-list {
5 | display: flex;
6 | position: relative;
7 |
8 | &:before {
9 | content: '';
10 | position: absolute;
11 | bottom: 0;
12 | display: block;
13 | width: 100%;
14 | }
15 |
16 | .tabs-container {
17 | display: flex;
18 | align-items: flex-end;
19 | z-index: 1;
20 | }
21 | }
22 |
23 | .tabs-list.type-default {
24 | &:before {
25 | border-bottom: 2px solid v(--border-subtle);
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/src/components/tabs/tabs/readme.md:
--------------------------------------------------------------------------------
1 | # goat-tabs
2 |
3 |
4 |
5 |
6 |
7 |
8 | ## Properties
9 |
10 | | Property | Attribute | Description | Type | Default |
11 | | -------- | --------- | ----------- | ------------------------------------------------ | ----------- |
12 | | `layer` | `layer` | | `"01" \| "02" \| "background"` | `undefined` |
13 | | `type` | `type` | | `"contained" \| "contained-bottom" \| "default"` | `'default'` |
14 |
15 |
16 | ----------------------------------------------
17 |
18 | *Built with love!*
19 |
--------------------------------------------------------------------------------
/src/components/tabs/tabs/tabs.scss:
--------------------------------------------------------------------------------
1 | @import "../../../globalStyles/commons";
2 |
3 | :host {
4 | display: flex;
5 | flex-direction: column;
6 | height: 100%;
7 | }
8 |
--------------------------------------------------------------------------------
/src/components/tooltip/tooltip.scss:
--------------------------------------------------------------------------------
1 | @import "../../globalStyles/commons";
2 |
3 | :host {
4 | display: inline-block;
5 | --goat-tooltip-height: inherit;
6 | height: var(--goat-tooltip-height);
7 | }
8 |
9 | .popover {
10 | --goat-popover-height: var(--goat-tooltip-height);
11 | }
12 |
13 | .tooltip-content {
14 | @include font-style(label-01);
15 | color: var(--text-inverse);
16 | max-width: 18rem;
17 | --popover-content-background: var(--background-inverse);
18 | --popover-content-padding: var(--spacing-03) var(--spacing-05);
19 | --popover-content-border-radius: 0;
20 | --popover-content-caret-size: 0.5rem;
21 | }
22 |
--------------------------------------------------------------------------------
/src/components/tree-view/tree-view/tree-view.scss:
--------------------------------------------------------------------------------
1 | @import "../../../globalStyles/commons";
2 |
3 | :host {
4 | display: block;
5 | }
6 |
7 | .tree-view {
8 | background-color: var(--layer);
9 | }
10 |
--------------------------------------------------------------------------------
/src/components/url-input/url-input.scss:
--------------------------------------------------------------------------------
1 | @import "../../components/input-controls/common-input";
2 |
3 | :host {
4 | display: block;
5 | }
6 |
7 | /* URL-specific styles */
8 | .input-container.invalid {
9 | border-color: var(--support-error);
10 | }
11 |
12 | .input-container.has-focus.invalid {
13 | box-shadow: 0 0 0 0.125rem var(--support-error);
14 | }
15 |
16 | .helper.invalid {
17 | color: var(--support-error-inverse);
18 | }
--------------------------------------------------------------------------------
/src/globalStyles/functions.scss:
--------------------------------------------------------------------------------
1 | @use "sass:map";
2 | @use "sass:list";
3 | @import 'theme/css-variables';
4 |
5 | @function v($name) {
6 | @return var(#{$name}, map.get($css-variables, $name));
7 | }
8 |
--------------------------------------------------------------------------------
/src/globalStyles/theme/css-variables.scss:
--------------------------------------------------------------------------------
1 | @import 'tokens/color';
2 | @import 'tokens/spacing';
3 | @import 'tokens/shadow';
4 | @import 'tokens/typography';
5 | @import 'tokens/common';
6 | @import 'tokens/breakpoints';
7 |
8 | $css-variables: ();
9 |
10 | $css-variables: map-merge($css-variables, $color-css-variables);
11 | $css-variables: map-merge($css-variables, $typography-css-variables);
12 | $css-variables: map-merge($css-variables, $spacing-css-variables);
13 | $css-variables: map-merge($css-variables, $shadows-css-variables);
14 | $css-variables: map-merge($css-variables, $common-css-variables);
15 |
--------------------------------------------------------------------------------
/src/globalStyles/theme/tokens/_breakpoints.scss:
--------------------------------------------------------------------------------
1 |
2 |
3 | $common: (
4 | border-radius: 3px,
5 | /**
6 | * TIP: use against position:relative elements
7 | */
8 | z-index-button: 0,
9 | z-index-badge: 20,
10 | z-index-table-header: 30,
11 | z-index-dropdown-content: 40,
12 | z-index-notification-manager: 100,
13 | z-index-modal: 2000,
14 | z-index-popover: 3000,
15 | z-index-tooltip: 4000,
16 | scrollbar-width: 0.75rem
17 | );
18 |
19 | $common-css-variables: ();
20 | @each $key, $value in $common {
21 | $map: ();
22 | $map: map-merge($map, ("--"+$key: $value));
23 | $common-css-variables: map-merge($common-css-variables, $map);
24 | }
25 |
--------------------------------------------------------------------------------
/src/globalStyles/theme/tokens/_common.scss:
--------------------------------------------------------------------------------
1 |
2 |
3 | $common: (
4 | border-radius: 3px,
5 | /**
6 | * TIP: use against position:relative elements
7 | */
8 | z-index-button: 0,
9 | z-index-badge: 20,
10 | z-index-table-header: 30,
11 | z-index-dropdown-content: 40,
12 | z-index-notification-manager: 100,
13 | z-index-modal: 2000,
14 | z-index-tooltip: 3000,
15 | scrollbar-width: 0.75rem
16 | );
17 |
18 | $common-css-variables: ();
19 | @each $key, $value in $common {
20 | $map: ();
21 | $map: map-merge($map, ("--"+$key: $value));
22 | $common-css-variables: map-merge($common-css-variables, $map);
23 | }
24 |
--------------------------------------------------------------------------------
/src/globalStyles/theme/tokens/_shadow.scss:
--------------------------------------------------------------------------------
1 | $shadows: (
2 | xs: 0px 1px 2px rgba(16, 24, 40, 0.05),
3 | sm: (0px 1px 3px rgba(16, 24, 40, 0.1), 0px 1px 2px rgba(16, 24, 40, 0.06)),
4 | md: (0px 4px 8px -2px rgba(16, 24, 40, 0.1), 0px 2px 4px -2px rgba(16, 24, 40, 0.06)),
5 | lg: (0px 12px 16px -4px rgba(16, 24, 40, 0.08), 0px 4px 6px -2px rgba(16, 24, 40, 0.03)),
6 | xl: (0px 20px 24px -4px rgba(16, 24, 40, 0.08), 0px 8px 8px -4px rgba(16, 24, 40, 0.03)),
7 | xxl: (0px 24px 48px -12px rgba(16, 24, 40, 0.18)),
8 | xxxl: (0px 32px 64px -12px rgba(16, 24, 40, 0.14)),
9 | );
10 |
11 | $shadows-css-variables: ();
12 |
13 | @each $key, $value in $shadows {
14 | $map: ();
15 | $map: map-merge($map, (--shadow-#{$key}: $value));
16 | $shadows-css-variables: map-merge($shadows-css-variables, $map);
17 | }
18 |
--------------------------------------------------------------------------------
/src/globalStyles/theme/tokens/_spacing.scss:
--------------------------------------------------------------------------------
1 | $base-space: 0.125;
2 |
3 | $spacing: (
4 | "01": $base-space,
5 | "02": 2 * $base-space,
6 | "03": 4 * $base-space,
7 | "04": 6 * $base-space,
8 | "05": 8 * $base-space,
9 | "06": 12 * $base-space,
10 | "07": 16 * $base-space,
11 | "08": 20 * $base-space,
12 | "09": 24 * $base-space,
13 | "10": 32 * $base-space,
14 | "11": 40 * $base-space,
15 | "12": 48 * $base-space,
16 | "13": 80 * $base-space,
17 | );
18 |
19 | $container-sizing: (
20 | sm: 320,
21 | md: 672,
22 | lg: 1056,
23 | xl: 1312,
24 | max: 1584
25 | );
26 |
27 | $spacing-css-variables: ();
28 |
29 | @each $key, $value in $spacing {
30 | $map: ();
31 | $map: map-merge($map, (--spacing-#{$key}: #{$value}rem));
32 | $spacing-css-variables: map-merge($spacing-css-variables, $map);
33 | }
34 |
35 | @each $key, $value in $container-sizing {
36 | $map: ();
37 | $map: map-merge($map, (--container-#{$key}: #{$value}px));
38 | $spacing-css-variables: map-merge($spacing-css-variables, $map);
39 | }
40 |
--------------------------------------------------------------------------------
/src/globalStyles/theme/tokens/color/background-colors.scss:
--------------------------------------------------------------------------------
1 |
2 | /*
3 | * Default page background;
4 | * UI Shell base color
5 | */
6 | @include defineThemeVariable(--background, getColor(white, 0), getColor(gray, 10), getColor(gray, 90), getColor(gray, 100));
7 |
8 | @include defineVariableDeprecated(--background-hover, getColor(gray, 50, 0.12), getColor(gray, 50, 0.16));
9 | @include defineVariableDeprecated(--background-active, getColor(gray, 50, 0.5), getColor(gray, 50, 0.4));
10 |
11 | @include defineVariableDeprecated(--border-inverse, getColor(gray, 100), getColor(gray, 10));
12 |
13 | @include defineVariableDeprecated(--background-inverse, getColor(gray, 80), getColor(gray, 10));
14 |
--------------------------------------------------------------------------------
/src/globalStyles/theme/tokens/color/field-colors.scss:
--------------------------------------------------------------------------------
1 |
2 | /*
3 | Default input fields;
4 | Fields on $backgrounds
5 | */
6 | @include defineThemeVariable(--field-01, getColor(gray, 10), getColor(white, 0), getColor(gray, 80), getColor(gray, 90));
7 |
8 | /*
9 | Secondary input fields;
10 | Fields on $layer-01
11 | */
12 | @include defineVariableDeprecated(--field-02, getColor(white, 0), getColor(gray, 80));
13 |
14 | /*
15 | Secondary input fields;
16 | Fields on $layer-02
17 | */
18 | @include defineVariableDeprecated(--field-03, getColor(gray, 10), getColor(gray, 70));
19 |
20 | /*
21 | Hover color for $field-01
22 | */
23 | @include defineVariableDeprecated(--field-hover-01, getColor(gray-hover, 10), getColor(gray-hover, 90));
24 |
25 | /*
26 | Hover color for $field-02
27 | */
28 | @include defineVariableDeprecated(--field-hover-02, getColor(gray-hover, 10), getColor(gray-hover, 80));
29 |
30 | /*
31 | Hover color for $field-03
32 | */
33 | @include defineVariableDeprecated(--field-hover-03, getColor(gray-hover, 10), getColor(gray-hover, 70));
34 |
--------------------------------------------------------------------------------
/src/globalStyles/theme/tokens/color/icon-colors.scss:
--------------------------------------------------------------------------------
1 |
2 | /*
3 | Primary icons
4 | */
5 | @include defineThemeVariable(--icon-primary, getColor(gray, 100), getColor(gray, 100), getColor(gray, 10), getColor(gray, 10));
6 |
7 | /*
8 |
9 | Inverse icon color
10 | */
11 | @include defineVariableDeprecated(--icon-inverse, getColor(white, 0), getColor(gray, 100));
12 |
13 |
14 | @include defineThemeVariable(--icon-secondary, getColor(gray, 70), getColor(gray, 70), getColor(gray, 30), getColor(gray, 30));
15 |
--------------------------------------------------------------------------------
/src/globalStyles/theme/tokens/color/skeleton-colors.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Skeleton color for text and UI elements
3 | */
4 | @include defineThemeVariable(--skeleton-element, getColor(gray, 30), getColor(gray, 30), getColor(gray, 70), getColor(gray, 70));
5 |
6 | /*
7 | * Skeleton color for containers
8 | */
9 | @include defineThemeVariable(--skeleton-background, getColor(gray-hover, 10), getColor(gray-hover, 10), getColor(gray-hover, 80), getColor(gray-hover, 80));
10 |
--------------------------------------------------------------------------------
/src/globalStyles/theme/tokens/color/text-colors.scss:
--------------------------------------------------------------------------------
1 |
2 | /**
3 | Primary text;
4 | Body copy;
5 | Headers;
6 | Hover text color for --text-secondary
7 | */
8 | @include defineVariableDeprecated(--text-primary, getColor(gray, 100), getColor(gray, 10));
9 |
10 | /**
11 | * Secondary text;
12 | * Input labels
13 | */
14 | @include defineVariableDeprecated(--text-secondary, getColor(gray, 70), getColor(gray, 30));
15 |
16 | /**
17 | * Placeholder text
18 | */
19 | @include defineVariableDeprecated(--text-placeholder, getColor(gray, 40), getColor(gray, 60));
20 |
21 | /**
22 | Text on interactive colors;
23 | Text on button colors
24 | */
25 | @include defineVariableDeprecated(--text-on-color, getColor(white, 0), getColor(white, 0));
26 |
27 |
28 | /**
29 | Tertiary text;
30 | Help text
31 | */
32 | @include defineVariableDeprecated(--text-helper, getColor(gray, 60), getColor(gray, 50));
33 |
34 | /**
35 | Error message text
36 | */
37 | @include defineVariableDeprecated(--text-error, getColor(red, 60), getColor(red, 40));
38 |
39 | /**
40 | Inverse text color
41 | */
42 | @include defineVariableDeprecated(--text-inverse, getColor(white, 0), getColor(gray, 100));
43 |
--------------------------------------------------------------------------------
/src/index.html:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/index.ts:
--------------------------------------------------------------------------------
1 | export { Components, JSX } from './components';
2 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "allowSyntheticDefaultImports": true,
4 | "allowUnreachableCode": false,
5 | "declaration": false,
6 | "experimentalDecorators": true,
7 | "lib": [
8 | "dom",
9 | "es2017"
10 | ],
11 | "moduleResolution": "node",
12 | "module": "esnext",
13 | "target": "es2017",
14 | "noUnusedLocals": true,
15 | "noUnusedParameters": true,
16 | "jsx": "react",
17 | "jsxFactory": "h"
18 | },
19 | "include": [
20 | "src"
21 | ],
22 | "exclude": [
23 | "node_modules"
24 | ]
25 | }
26 |
--------------------------------------------------------------------------------