@phila/phila-ui-app-footer 0.0.32 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,48 +1,140 @@
1
- # AppFooter Component
1
+ # Phila AppFooter Component
2
2
 
3
- A simple, customizable Vue 3. AppFooter component built with TypeScript and Vite.
4
- A footer vue component for site info and related links.
3
+ A Vue component for displaying site footer information with navigation links, social media icons, and legal links.
5
4
 
6
5
  ## Features
7
6
 
7
+ - 🎨 Three customizable navigation sections with default content
8
+ - 📱 Responsive design with mobile breakpoint
9
+ - 🔗 Social media icons with FontAwesome integration
8
10
  - 🎯 TypeScript support with full type definitions
11
+ - ♿ Accessibility features: semantic HTML, proper link structure
12
+ - 🔄 Flexible slots for custom content
9
13
 
10
14
  ## Installation
11
15
 
12
16
  ```bash
13
17
  npm install @phila/phila-ui-app-footer
14
18
  # or
15
- yarn add @phila/phila-ui-app-footer
16
- # or
17
19
  pnpm add @phila/phila-ui-app-footer
18
20
  ```
19
21
 
22
+ Import core styles in your main entry file (e.g., `main.js|ts`):
23
+
24
+ ```typescript
25
+ import "@phila/core/styles/template-light.css";
26
+ ```
27
+
20
28
  ## Usage
21
29
 
30
+ ### Basic Usage
31
+
32
+ Use the `AppFooter` component with default content:
33
+
34
+ ```vue
35
+ <template>
36
+ <AppFooter />
37
+ </template>
38
+
39
+ <script setup lang="ts">
40
+ import { AppFooter } from "@phila/phila-ui-app-footer";
41
+ </script>
42
+ ```
43
+
44
+ ### Custom Content with Slots
45
+
46
+ Customize any section using named slots:
47
+
22
48
  ```vue
49
+ <template>
50
+ <AppFooter>
51
+ <template #firstNavSlot>
52
+ <div>
53
+ <h4>Custom Section</h4>
54
+ <ul>
55
+ <li><a href="/about">About Us</a></li>
56
+ <li><a href="/contact">Contact</a></li>
57
+ </ul>
58
+ </div>
59
+ </template>
60
+
61
+ <template #secondNavSlot>
62
+ <div>
63
+ <h4>Resources</h4>
64
+ <ul>
65
+ <li><a href="/docs">Documentation</a></li>
66
+ <li><a href="/help">Help Center</a></li>
67
+ </ul>
68
+ </div>
69
+ </template>
70
+
71
+ <template #thirdNavSlot>
72
+ <div>
73
+ <h4>Connect</h4>
74
+ <!-- Custom social media links -->
75
+ </div>
76
+ </template>
77
+ </AppFooter>
78
+ </template>
79
+
80
+ <script setup lang="ts">
81
+ import { AppFooter } from "@phila/phila-ui-app-footer";
82
+ </script>
83
+ ```
84
+
85
+ ### Sub-Footer Only
86
+
87
+ Display only the legal links section:
88
+
89
+ ```vue
90
+ <template>
91
+ <AppFooter :subFooterOnly="true" />
92
+ </template>
93
+
23
94
  <script setup lang="ts">
24
95
  import { AppFooter } from "@phila/phila-ui-app-footer";
25
96
  </script>
26
- <template>...Add basic component template here...</template>
27
97
  ```
28
98
 
29
99
  ## Props
30
100
 
31
- | Prop | Type | Default | Description |
32
- | ---- | ---- | ------- | ----------- |
101
+ | Prop | Type | Default | Description |
102
+ | --------------- | ------- | ------- | -------------------------------------------------------- |
103
+ | `subFooterOnly` | boolean | `false` | When true, only displays the sub-footer with legal links |
104
+ | `className` | string | `""` | Additional CSS classes to apply to the footer |
33
105
 
34
- | ...Add props here...
106
+ ## Slots
35
107
 
36
- ## Events
108
+ | Slot Name | Description |
109
+ | --------------- | ------------------------------------------------------- |
110
+ | `firstNavSlot` | First navigation section (default: City services links) |
111
+ | `secondNavSlot` | Second navigation section (default: Government links) |
112
+ | `thirdNavSlot` | Third navigation section (default: Social media icons) |
37
113
 
38
- | Event | Payload | Description |
39
- | ----- | ------- | ----------- |
114
+ ## Default Content
40
115
 
41
- | ...Add events here...
116
+ The component includes default content for all three navigation sections:
42
117
 
43
- ## Examples
118
+ - **First Section**: Links to SEPTA and Visit Philadelphia
119
+ - **Second Section**: Government and city service links
120
+ - **Third Section**: Social media icons (Facebook, Twitter, Instagram, GovTV, YouTube, Flickr, GitHub, LinkedIn)
44
121
 
45
- ...Add examples here...
122
+ The sub-footer always displays links to Terms of Use, Right to Know, Privacy Policy, and Accessibility.
123
+
124
+ ## Responsive Behavior
125
+
126
+ - **Desktop (>X)**: Three columns displayed horizontally with vertical dividers
127
+ - **Mobile (<X))**: Stacked layout with horizontal dividers between sections
128
+
129
+ ## FontAwesome Icons
130
+
131
+ The footer uses FontAwesome icons for social media links. The component requires:
132
+
133
+ ```bash
134
+ pnpm add @fortawesome/vue-fontawesome @fortawesome/free-brands-svg-icons
135
+ ```
136
+
137
+ These are listed as peer dependencies and should be installed in your application.
46
138
 
47
139
  ## Development
48
140
 
@@ -52,24 +144,37 @@ import { AppFooter } from "@phila/phila-ui-app-footer";
52
144
  pnpm install
53
145
  ```
54
146
 
55
- ### Run Demo
147
+ ### Run Storybook demo
56
148
 
57
149
  ```bash
58
- pnpm dev
150
+ npm run storybook
59
151
  ```
60
152
 
61
- ### Build Library
153
+ ### Run lint
62
154
 
63
155
  ```bash
64
- pnpm build
156
+ npm run lint
65
157
  ```
66
158
 
67
- ### Type Check
159
+ ### Create Production Build
68
160
 
69
161
  ```bash
70
- pnpm type-check
162
+ npm run build
71
163
  ```
72
164
 
165
+ ## Test locally in your development environment
166
+
167
+ ```bash
168
+ npm pack
169
+ cp ./dist/*.tgz ~/path/to/your/local/npm/repo
170
+ cd ~/path/to/your/local/npm/repo
171
+ npm install *.tgz
172
+ ```
173
+
174
+ ## Publishing to NPM
175
+
176
+ Follow the [release instructions](../../RELEASE.md) using changesets.
177
+
73
178
  ## License
74
179
 
75
180
  MIT
@@ -1,4 +1,23 @@
1
1
  import { AppFooterProps } from './index';
2
- declare const _default: import('vue').DefineComponent<AppFooterProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<AppFooterProps> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLSpanElement>;
2
+ declare function __VLS_template(): {
3
+ attrs: Partial<{}>;
4
+ slots: {
5
+ firstNavSlot?(_: {}): any;
6
+ secondNavSlot?(_: {}): any;
7
+ thirdNavSlot?(_: {}): any;
8
+ };
9
+ refs: {};
10
+ rootEl: HTMLElement;
11
+ };
12
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
13
+ declare const __VLS_component: import('vue').DefineComponent<AppFooterProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<AppFooterProps> & Readonly<{}>, {
14
+ subFooterOnly: boolean;
15
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLElement>;
16
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
3
17
  export default _default;
18
+ type __VLS_WithTemplateSlots<T, S> = T & {
19
+ new (): {
20
+ $slots: S;
21
+ };
22
+ };
4
23
  //# sourceMappingURL=AppFooter.vue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AppFooter.vue.d.ts","sourceRoot":"","sources":["../src/AppFooter.vue"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;;AA+D9C,wBASG"}
1
+ {"version":3,"file":"AppFooter.vue.d.ts","sourceRoot":"","sources":["../src/AppFooter.vue"],"names":[],"mappings":"AAyHA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAmB9C,iBAAS,cAAc;WAqGT,OAAO,IAA6B;;8BAZhB,GAAG;+BACF,GAAG;8BACH,GAAG;;;;EAerC;AAaD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;qFAQnB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAapG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
@@ -0,0 +1,3 @@
1
+ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLDivElement>;
2
+ export default _default;
3
+ //# sourceMappingURL=FirstNavSlotContent.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FirstNavSlotContent.vue.d.ts","sourceRoot":"","sources":["../../src/DefaultContent/FirstNavSlotContent.vue"],"names":[],"mappings":"AAiBA;;AAyGA,wBAMG"}
@@ -0,0 +1,3 @@
1
+ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLDivElement>;
2
+ export default _default;
3
+ //# sourceMappingURL=SecondNavSlotContent.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SecondNavSlotContent.vue.d.ts","sourceRoot":"","sources":["../../src/DefaultContent/SecondNavSlotContent.vue"],"names":[],"mappings":"AA2BA;;AAmHA,wBAMG"}
@@ -0,0 +1,3 @@
1
+ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLDivElement>;
2
+ export default _default;
3
+ //# sourceMappingURL=ThirdNavSlotContent.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThirdNavSlotContent.vue.d.ts","sourceRoot":"","sources":["../../src/DefaultContent/ThirdNavSlotContent.vue"],"names":[],"mappings":";AAuUA,wBAMG"}
package/dist/index.css CHANGED
@@ -0,0 +1 @@
1
+ .phila-footer-icon-list[data-v-7e4a39f7]{display:flex;flex-wrap:wrap;gap:.5rem}.phila-footer-icon-list li a[data-v-7e4a39f7]{display:flex;align-items:center;justify-content:center}.phila-footer[data-v-14406884],.phila-footer [data-v-14406884] a{color:var(--Schemes-On-Primary-Container)}.phila-footer [data-v-14406884] ul{list-style:none;padding:0}.phila-footer [data-v-14406884] li{margin-bottom:var(--scale-small)}.phila-main-footer[data-v-14406884]{display:flex;justify-content:center;padding:var(--spacing-3xl);background-color:var(--Schemes-Primary-Container)}.phila-main-footer-content[data-v-14406884]{display:flex;max-width:60rem;gap:var(--spacing-3xl)}.phila-main-footer-slot[data-v-14406884]{display:flex;min-width:6.25rem;flex:1 0 0}[data-v-14406884]:root{--phila-main-footer-divider-size: .0625rem}.phila-main-footer-divider[data-v-14406884]{width:var(--phila-main-footer-divider-size);background-color:var(--Schemes-On-Primary-Container)}@media (max-width: 40rem){.phila-main-footer-content[data-v-14406884]{flex-direction:column}.phila-footer-divider[data-v-14406884]{height:var(--phila-footer-divider-size);width:100%}}.phila-sub-footer[data-v-14406884]{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--scale-small);padding:var(--spacing-l);background-color:var(--Schemes-On-Surface)}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { BaseProps } from '@phila/phila-ui-core';
2
2
  export { default as AppFooter } from './AppFooter.vue';
3
3
  export interface AppFooterProps extends BaseProps {
4
+ subFooterOnly?: boolean;
4
5
  }
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAIvD,MAAM,WAAW,cAAe,SAAQ,SAAS;CAEhD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEvD,MAAM,WAAW,cAAe,SAAQ,SAAS;IAC/C,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB"}
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('./index.css');const e=require("vue"),n=require("@phila/phila-ui-core"),a=e.defineComponent({__name:"AppFooter",props:{className:{}},setup(o,{emit:c}){const t=o,s=e.computed(()=>n.cn("default-class",t.className));return(r,u)=>(e.openBlock(),e.createElementBlock("span",{class:e.normalizeClass(s.value)}," Hello world! I am AppFooter ",2))}}),p=(o,c)=>{const t=o.__vccOpts||o;for(const[s,r]of c)t[s]=r;return t},l=p(a,[["__scopeId","data-v-f636e62c"]]);exports.AppFooter=l;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('./index.css');const e=require("vue"),c=require("@phila/phila-ui-core"),n=require("@fortawesome/vue-fontawesome"),r=e.defineComponent({__name:"FirstNavSlotContent",setup(a){return(l,t)=>(e.openBlock(),e.createElementBlock("div",null,t[0]||(t[0]=[e.createStaticVNode('<h4>Elected officials</h4><nav><ul><li><a href="https://www.phila.gov/departments/mayor/">Mayor</a></li><li><a href="http://phlcouncil.com/">City Council</a></li><li><a href="http://www.courts.phila.gov/">Courts</a></li><li><a href="https://phillyda.org/">District Attorney</a></li><li><a href="https://controller.phila.gov/">City Controller</a></li><li><a href="https://phillysheriff.com/">Sheriff</a></li><li><a href="https://vote.phila.gov/">City Commissioners</a></li><li><a href="https://www.phila.gov/departments/register-of-wills/">Register of Wills</a></li></ul></nav>',2)])))}}),d=e.defineComponent({__name:"SecondNavSlotContent",setup(a){return(l,t)=>(e.openBlock(),e.createElementBlock("div",null,t[0]||(t[0]=[e.createStaticVNode('<h4>Open government</h4><nav><ul><li><a href="https://codelibrary.amlegal.com/codes/philadelphia/latest/overview">Philadelphia Code &amp; Charter</a></li><li><a href="https://www.phila.gov/departments/department-of-records/">City records</a></li><li><a href="https://www.phila.gov/departments/department-of-records/proposed-regulations/#/">City agency regulations</a></li><li><a href="https://www.phila.gov/departments/mayor/executive-orders/">Executive orders</a></li><li><a href="https://www.phila.gov/programs/integrity-works/">Honesty in government</a></li><li><a href="https://vote.phila.gov/">Voting &amp; elections</a></li><li><a href="https://www.phila.gov/programs/open-data-program/">Open data</a></li><li><a href="https://www.phila.gov/documents/city-of-philadelphia-organization-chart/">City organization chart</a></li></ul></nav>',2)])))}});var p={prefix:"fab",iconName:"facebook-f",icon:[320,512,[],"f39e","M80 299.3l0 212.7 116 0 0-212.7 86.5 0 18-97.8-104.5 0 0-34.6c0-51.7 20.3-71.5 72.7-71.5 16.3 0 29.4 .4 37 1.2l0-88.7C291.4 4 256.4 0 236.2 0 129.3 0 80 50.5 80 159.4l0 42.1-66 0 0 97.8 66 0z"]},h={prefix:"fab",iconName:"youtube",icon:[576,512,[61802],"f167","M549.7 124.1C543.5 100.4 524.9 81.8 501.4 75.5 458.9 64 288.1 64 288.1 64S117.3 64 74.7 75.5C51.2 81.8 32.7 100.4 26.4 124.1 15 167 15 256.4 15 256.4s0 89.4 11.4 132.3c6.3 23.6 24.8 41.5 48.3 47.8 42.6 11.5 213.4 11.5 213.4 11.5s170.8 0 213.4-11.5c23.5-6.3 42-24.2 48.3-47.8 11.4-42.9 11.4-132.3 11.4-132.3s0-89.4-11.4-132.3zM232.2 337.6l0-162.4 142.7 81.2-142.7 81.2z"]},m={prefix:"fab",iconName:"github",icon:[512,512,[],"f09b","M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3 .3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5 .3-6.2 2.3zm44.2-1.7c-2.9 .7-4.9 2.6-4.6 4.9 .3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM252.8 8c-138.7 0-244.8 105.3-244.8 244 0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1 100-33.2 167.8-128.1 167.8-239 0-138.7-112.5-244-251.2-244zM105.2 352.9c-1.3 1-1 3.3 .7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3 .3 2.9 2.3 3.9 1.6 1 3.6 .7 4.3-.7 .7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3 .7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3 .7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"]},u={prefix:"fab",iconName:"flickr",icon:[448,512,[],"f16e","M400 32L48 32C21.5 32 0 53.5 0 80L0 432c0 26.5 21.5 48 48 48l352 0c26.5 0 48-21.5 48-48l0-352c0-26.5-21.5-48-48-48zM144.5 192a63.5 63.5 0 1 1 0 127 63.5 63.5 0 1 1 0-127zm159 0a63.5 63.5 0 1 1 0 127 63.5 63.5 0 1 1 0-127z"]},f={prefix:"fab",iconName:"instagram",icon:[448,512,[],"f16d","M224.3 141a115 115 0 1 0 -.6 230 115 115 0 1 0 .6-230zm-.6 40.4a74.6 74.6 0 1 1 .6 149.2 74.6 74.6 0 1 1 -.6-149.2zm93.4-45.1a26.8 26.8 0 1 1 53.6 0 26.8 26.8 0 1 1 -53.6 0zm129.7 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM399 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"]},v={prefix:"fab",iconName:"x-twitter",icon:[448,512,[],"e61b","M357.2 48L427.8 48 273.6 224.2 455 464 313 464 201.7 318.6 74.5 464 3.8 464 168.7 275.5-5.2 48 140.4 48 240.9 180.9 357.2 48zM332.4 421.8l39.1 0-252.4-333.8-42 0 255.3 333.8z"]},w={prefix:"fab",iconName:"linkedin-in",icon:[448,512,[],"f0e1","M100.3 448l-92.9 0 0-299.1 92.9 0 0 299.1zM53.8 108.1C24.1 108.1 0 83.5 0 53.8 0 39.5 5.7 25.9 15.8 15.8s23.8-15.8 38-15.8 27.9 5.7 38 15.8 15.8 23.8 15.8 38c0 29.7-24.1 54.3-53.8 54.3zM447.9 448l-92.7 0 0-145.6c0-34.7-.7-79.2-48.3-79.2-48.3 0-55.7 37.7-55.7 76.7l0 148.1-92.8 0 0-299.1 89.1 0 0 40.8 1.3 0c12.4-23.5 42.7-48.3 87.9-48.3 94 0 111.3 61.9 111.3 142.3l0 164.3-.1 0z"]};const C="data:image/svg+xml,%3csvg%20width='31'%20height='25'%20viewBox='0%200%2031%2025'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_745_1378)'%3e%3cpath%20d='M28%203.125H3.1V17H28V3.125ZM0%2017.1875V3.125C0%201.40137%201.39016%200%203.1%200H27.9C29.6098%200%2031%201.40137%2031%203.125V17.1875C31%2018.9111%2029.6098%2020.3125%2027.9%2020H3.1C1.39016%2020.3125%200%2018.9111%200%2017.1875ZM4.65%2023.4375C4.65%2022.5732%205.34266%2021.875%206.2%2021.875H24.8C25.6573%2021.875%2026.35%2022.5732%2026.35%2023.4375C26.35%2024.3018%2025.6573%2025%2024.8%2025H6.2C5.34266%2025%204.65%2024.3018%204.65%2023.4375Z'%20fill='%23ECFDFF'/%3e%3cpath%20d='M8.76074%2010.4209V9.69727H10.6299V11.4082C10.4482%2011.584%2010.1846%2011.7393%209.83887%2011.874C9.49512%2012.0068%209.14648%2012.0732%208.79297%2012.0732C8.34375%2012.0732%207.95215%2011.9795%207.61816%2011.792C7.28418%2011.6025%207.0332%2011.333%206.86523%2010.9834C6.69727%2010.6318%206.61328%2010.25%206.61328%209.83789C6.61328%209.39062%206.70703%208.99316%206.89453%208.64551C7.08203%208.29785%207.35645%208.03125%207.71777%207.8457C7.99316%207.70312%208.33594%207.63184%208.74609%207.63184C9.2793%207.63184%209.69531%207.74414%209.99414%207.96875C10.2949%208.19141%2010.4883%208.5%2010.5742%208.89453L9.71289%209.05566C9.65234%208.84473%209.53809%208.67871%209.37012%208.55762C9.2041%208.43457%208.99609%208.37305%208.74609%208.37305C8.36719%208.37305%208.06543%208.49316%207.84082%208.7334C7.61816%208.97363%207.50684%209.33008%207.50684%209.80273C7.50684%2010.3125%207.62012%2010.6953%207.84668%2010.9512C8.07324%2011.2051%208.37012%2011.332%208.7373%2011.332C8.91895%2011.332%209.10059%2011.2969%209.28223%2011.2266C9.46582%2011.1543%209.62305%2011.0674%209.75391%2010.9658V10.4209H8.76074ZM11.2363%2010.4004C11.2363%2010.127%2011.3037%209.8623%2011.4385%209.60645C11.5732%209.35059%2011.7637%209.15527%2012.0098%209.02051C12.2578%208.88574%2012.5342%208.81836%2012.8389%208.81836C13.3096%208.81836%2013.6953%208.97168%2013.9961%209.27832C14.2969%209.58301%2014.4473%209.96875%2014.4473%2010.4355C14.4473%2010.9062%2014.2949%2011.2969%2013.9902%2011.6074C13.6875%2011.916%2013.3057%2012.0703%2012.8447%2012.0703C12.5596%2012.0703%2012.2871%2012.0059%2012.0273%2011.877C11.7695%2011.748%2011.5732%2011.5596%2011.4385%2011.3115C11.3037%2011.0615%2011.2363%2010.7578%2011.2363%2010.4004ZM12.0801%2010.4443C12.0801%2010.7529%2012.1533%2010.9893%2012.2998%2011.1533C12.4463%2011.3174%2012.627%2011.3994%2012.8418%2011.3994C13.0566%2011.3994%2013.2363%2011.3174%2013.3809%2011.1533C13.5273%2010.9893%2013.6006%2010.751%2013.6006%2010.4385C13.6006%2010.1338%2013.5273%209.89941%2013.3809%209.73535C13.2363%209.57129%2013.0566%209.48926%2012.8418%209.48926C12.627%209.48926%2012.4463%209.57129%2012.2998%209.73535C12.1533%209.89941%2012.0801%2010.1357%2012.0801%2010.4443ZM15.9502%2012L14.6963%208.88867H15.5605L16.1465%2010.4766L16.3164%2011.0068C16.3613%2010.8721%2016.3896%2010.7832%2016.4014%2010.7402C16.4287%2010.6523%2016.458%2010.5645%2016.4893%2010.4766L17.0811%208.88867H17.9277L16.6914%2012H15.9502ZM19.4072%2012V8.43164H18.1328V7.70508H21.5459V8.43164H20.2744V12H19.4072ZM23.2041%2012L21.6689%207.70508H22.6094L23.6963%2010.8838L24.748%207.70508H25.668L24.1299%2012H23.2041Z'%20fill='%23ECFDFF'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_745_1378'%3e%3crect%20width='31'%20height='25'%20fill='white'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e",N={class:"phila-footer-icon-list"},V={class:"phila-button phila-button--standard icon-button is-medium",href:"https://www.facebook.com/cityofphiladelphia"},_={class:"icon"},g={class:"phila-button phila-button--standard icon-button is-medium",href:"https://twitter.com/PhiladelphiaGov"},b={class:"icon"},E={class:"phila-button phila-button--standard icon-button is-medium",href:"https://www.instagram.com/cityofphiladelphia/"},y={class:"icon"},z={class:"phila-button phila-button--standard icon-button is-medium",href:"https://www.phila.gov/departments/office-of-innovation-and-technology/phlgovtv/"},M=["src"],F={class:"phila-button phila-button--standard icon-button is-medium",href:"https://www.youtube.com/user/PhilaGov"},k={class:"icon"},H={class:"phila-button phila-button--standard icon-button is-medium",href:"https://www.flickr.com/photos/phillycityrep"},S={class:"icon"},x={class:"phila-button phila-button--standard icon-button is-medium",href:"https://github.com/CityOfPhiladelphia"},L={class:"icon"},A={class:"phila-button phila-button--standard icon-button is-medium",href:"https://www.linkedin.com/showcase/phlcitycareers"},B={class:"icon"},I=e.defineComponent({__name:"ThirdNavSlotContent",setup(a){return(l,t)=>(e.openBlock(),e.createElementBlock("div",null,[t[0]||(t[0]=e.createElementVNode("h4",null,"Explore Philadelphia",-1)),t[1]||(t[1]=e.createElementVNode("nav",null,[e.createElementVNode("ul",null,[e.createElementVNode("li",null,[e.createElementVNode("a",{href:"https://www.septa.org/"},"SEPTA")]),e.createElementVNode("li",null,[e.createElementVNode("a",{href:"https://www.visitphilly.com/"},"Visit Philadelphia")])])],-1)),e.createElementVNode("nav",null,[e.createElementVNode("ul",N,[e.createElementVNode("li",null,[e.createElementVNode("a",V,[e.createElementVNode("span",_,[e.createVNode(e.unref(n.FontAwesomeIcon),{icon:e.unref(p)},null,8,["icon"])])])]),e.createElementVNode("li",null,[e.createElementVNode("a",g,[e.createElementVNode("span",b,[e.createVNode(e.unref(n.FontAwesomeIcon),{icon:e.unref(v)},null,8,["icon"])])])]),e.createElementVNode("li",null,[e.createElementVNode("a",E,[e.createElementVNode("span",y,[e.createVNode(e.unref(n.FontAwesomeIcon),{icon:e.unref(f)},null,8,["icon"])])])]),e.createElementVNode("li",null,[e.createElementVNode("a",z,[e.createElementVNode("img",{src:e.unref(C),alt:"GovTV",class:"icon"},null,8,M)])]),e.createElementVNode("li",null,[e.createElementVNode("a",F,[e.createElementVNode("span",k,[e.createVNode(e.unref(n.FontAwesomeIcon),{icon:e.unref(h)},null,8,["icon"])])])]),e.createElementVNode("li",null,[e.createElementVNode("a",H,[e.createElementVNode("span",S,[e.createVNode(e.unref(n.FontAwesomeIcon),{icon:e.unref(u)},null,8,["icon"])])])]),e.createElementVNode("li",null,[e.createElementVNode("a",x,[e.createElementVNode("span",L,[e.createVNode(e.unref(n.FontAwesomeIcon),{icon:e.unref(m)},null,8,["icon"])])])]),e.createElementVNode("li",null,[e.createElementVNode("a",A,[e.createElementVNode("span",B,[e.createVNode(e.unref(n.FontAwesomeIcon),{icon:e.unref(w)},null,8,["icon"])])])])])])]))}}),s=(a,l)=>{const t=a.__vccOpts||a;for(const[i,o]of l)t[i]=o;return t},P=s(I,[["__scopeId","data-v-7e4a39f7"]]),$={key:0,id:"mainFooter",class:"phila-main-footer"},Z={class:"phila-main-footer-content"},T={class:"phila-main-footer-slot"},O={class:"phila-main-footer-slot"},G={class:"phila-main-footer-slot"},q=e.defineComponent({__name:"AppFooter",props:{subFooterOnly:{type:Boolean,default:!1},className:{}},setup(a){const l=a,t=e.computed(()=>c.cn("phila-footer content",l.className));return(i,o)=>(e.openBlock(),e.createElementBlock("footer",{class:e.normalizeClass(t.value)},[i.subFooterOnly?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",$,[e.createElementVNode("div",Z,[e.createElementVNode("nav",T,[e.renderSlot(i.$slots,"firstNavSlot",{},()=>[e.createVNode(r)],!0)]),o[0]||(o[0]=e.createElementVNode("div",{class:"phila-footer-divider"},null,-1)),e.createElementVNode("nav",O,[e.renderSlot(i.$slots,"secondNavSlot",{},()=>[e.createVNode(d)],!0)]),o[1]||(o[1]=e.createElementVNode("div",{class:"phila-footer-divider"},null,-1)),e.createElementVNode("nav",G,[e.renderSlot(i.$slots,"thirdNavSlot",{},()=>[e.createVNode(P)],!0)])])])),o[2]||(o[2]=e.createStaticVNode('<div id="subFooter" class="phila-sub-footer" data-v-14406884><a href="https://www.phila.gov/terms-of-use/" data-v-14406884>Terms of use</a><a href="https://www.phila.gov/open-records-policy/" data-v-14406884>Right to know</a><a href="https://www.phila.gov/privacypolicy/" data-v-14406884>Privacy Policy</a><a href="https://www.phila.gov/accessibility-policy/" data-v-14406884>Accessibility</a></div>',1))],2))}}),D=s(q,[["__scopeId","data-v-14406884"]]);exports.AppFooter=D;
package/dist/index.mjs CHANGED
@@ -1,22 +1,198 @@
1
- import { defineComponent as r, computed as a, createElementBlock as n, openBlock as p, normalizeClass as l } from "vue";
2
- import { cn as m } from "@phila/phila-ui-core";
3
- import './index.css';const _ = /* @__PURE__ */ r({
1
+ import { defineComponent as p, createElementBlock as r, openBlock as h, createStaticVNode as f, createElementVNode as t, createVNode as a, unref as i, computed as m, normalizeClass as v, createCommentVNode as w, renderSlot as d } from "vue";
2
+ import { cn as C } from "@phila/phila-ui-core";
3
+ import { FontAwesomeIcon as s } from "@fortawesome/vue-fontawesome";
4
+ import './index.css';const _ = /* @__PURE__ */ p({
5
+ __name: "FirstNavSlotContent",
6
+ setup(e) {
7
+ return (n, o) => (h(), r("div", null, o[0] || (o[0] = [
8
+ f('<h4>Elected officials</h4><nav><ul><li><a href="https://www.phila.gov/departments/mayor/">Mayor</a></li><li><a href="http://phlcouncil.com/">City Council</a></li><li><a href="http://www.courts.phila.gov/">Courts</a></li><li><a href="https://phillyda.org/">District Attorney</a></li><li><a href="https://controller.phila.gov/">City Controller</a></li><li><a href="https://phillysheriff.com/">Sheriff</a></li><li><a href="https://vote.phila.gov/">City Commissioners</a></li><li><a href="https://www.phila.gov/departments/register-of-wills/">Register of Wills</a></li></ul></nav>', 2)
9
+ ])));
10
+ }
11
+ }), g = /* @__PURE__ */ p({
12
+ __name: "SecondNavSlotContent",
13
+ setup(e) {
14
+ return (n, o) => (h(), r("div", null, o[0] || (o[0] = [
15
+ f('<h4>Open government</h4><nav><ul><li><a href="https://codelibrary.amlegal.com/codes/philadelphia/latest/overview">Philadelphia Code &amp; Charter</a></li><li><a href="https://www.phila.gov/departments/department-of-records/">City records</a></li><li><a href="https://www.phila.gov/departments/department-of-records/proposed-regulations/#/">City agency regulations</a></li><li><a href="https://www.phila.gov/departments/mayor/executive-orders/">Executive orders</a></li><li><a href="https://www.phila.gov/programs/integrity-works/">Honesty in government</a></li><li><a href="https://vote.phila.gov/">Voting &amp; elections</a></li><li><a href="https://www.phila.gov/programs/open-data-program/">Open data</a></li><li><a href="https://www.phila.gov/documents/city-of-philadelphia-organization-chart/">City organization chart</a></li></ul></nav>', 2)
16
+ ])));
17
+ }
18
+ });
19
+ var b = {
20
+ prefix: "fab",
21
+ iconName: "facebook-f",
22
+ icon: [320, 512, [], "f39e", "M80 299.3l0 212.7 116 0 0-212.7 86.5 0 18-97.8-104.5 0 0-34.6c0-51.7 20.3-71.5 72.7-71.5 16.3 0 29.4 .4 37 1.2l0-88.7C291.4 4 256.4 0 236.2 0 129.3 0 80 50.5 80 159.4l0 42.1-66 0 0 97.8 66 0z"]
23
+ }, y = {
24
+ prefix: "fab",
25
+ iconName: "youtube",
26
+ icon: [576, 512, [61802], "f167", "M549.7 124.1C543.5 100.4 524.9 81.8 501.4 75.5 458.9 64 288.1 64 288.1 64S117.3 64 74.7 75.5C51.2 81.8 32.7 100.4 26.4 124.1 15 167 15 256.4 15 256.4s0 89.4 11.4 132.3c6.3 23.6 24.8 41.5 48.3 47.8 42.6 11.5 213.4 11.5 213.4 11.5s170.8 0 213.4-11.5c23.5-6.3 42-24.2 48.3-47.8 11.4-42.9 11.4-132.3 11.4-132.3s0-89.4-11.4-132.3zM232.2 337.6l0-162.4 142.7 81.2-142.7 81.2z"]
27
+ }, z = {
28
+ prefix: "fab",
29
+ iconName: "github",
30
+ icon: [512, 512, [], "f09b", "M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3 .3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5 .3-6.2 2.3zm44.2-1.7c-2.9 .7-4.9 2.6-4.6 4.9 .3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM252.8 8c-138.7 0-244.8 105.3-244.8 244 0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1 100-33.2 167.8-128.1 167.8-239 0-138.7-112.5-244-251.2-244zM105.2 352.9c-1.3 1-1 3.3 .7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3 .3 2.9 2.3 3.9 1.6 1 3.6 .7 4.3-.7 .7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3 .7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3 .7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"]
31
+ }, M = {
32
+ prefix: "fab",
33
+ iconName: "flickr",
34
+ icon: [448, 512, [], "f16e", "M400 32L48 32C21.5 32 0 53.5 0 80L0 432c0 26.5 21.5 48 48 48l352 0c26.5 0 48-21.5 48-48l0-352c0-26.5-21.5-48-48-48zM144.5 192a63.5 63.5 0 1 1 0 127 63.5 63.5 0 1 1 0-127zm159 0a63.5 63.5 0 1 1 0 127 63.5 63.5 0 1 1 0-127z"]
35
+ }, N = {
36
+ prefix: "fab",
37
+ iconName: "instagram",
38
+ icon: [448, 512, [], "f16d", "M224.3 141a115 115 0 1 0 -.6 230 115 115 0 1 0 .6-230zm-.6 40.4a74.6 74.6 0 1 1 .6 149.2 74.6 74.6 0 1 1 -.6-149.2zm93.4-45.1a26.8 26.8 0 1 1 53.6 0 26.8 26.8 0 1 1 -53.6 0zm129.7 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM399 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"]
39
+ }, H = {
40
+ prefix: "fab",
41
+ iconName: "x-twitter",
42
+ icon: [448, 512, [], "e61b", "M357.2 48L427.8 48 273.6 224.2 455 464 313 464 201.7 318.6 74.5 464 3.8 464 168.7 275.5-5.2 48 140.4 48 240.9 180.9 357.2 48zM332.4 421.8l39.1 0-252.4-333.8-42 0 255.3 333.8z"]
43
+ }, V = {
44
+ prefix: "fab",
45
+ iconName: "linkedin-in",
46
+ icon: [448, 512, [], "f0e1", "M100.3 448l-92.9 0 0-299.1 92.9 0 0 299.1zM53.8 108.1C24.1 108.1 0 83.5 0 53.8 0 39.5 5.7 25.9 15.8 15.8s23.8-15.8 38-15.8 27.9 5.7 38 15.8 15.8 23.8 15.8 38c0 29.7-24.1 54.3-53.8 54.3zM447.9 448l-92.7 0 0-145.6c0-34.7-.7-79.2-48.3-79.2-48.3 0-55.7 37.7-55.7 76.7l0 148.1-92.8 0 0-299.1 89.1 0 0 40.8 1.3 0c12.4-23.5 42.7-48.3 87.9-48.3 94 0 111.3 61.9 111.3 142.3l0 164.3-.1 0z"]
47
+ };
48
+ const F = "data:image/svg+xml,%3csvg%20width='31'%20height='25'%20viewBox='0%200%2031%2025'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_745_1378)'%3e%3cpath%20d='M28%203.125H3.1V17H28V3.125ZM0%2017.1875V3.125C0%201.40137%201.39016%200%203.1%200H27.9C29.6098%200%2031%201.40137%2031%203.125V17.1875C31%2018.9111%2029.6098%2020.3125%2027.9%2020H3.1C1.39016%2020.3125%200%2018.9111%200%2017.1875ZM4.65%2023.4375C4.65%2022.5732%205.34266%2021.875%206.2%2021.875H24.8C25.6573%2021.875%2026.35%2022.5732%2026.35%2023.4375C26.35%2024.3018%2025.6573%2025%2024.8%2025H6.2C5.34266%2025%204.65%2024.3018%204.65%2023.4375Z'%20fill='%23ECFDFF'/%3e%3cpath%20d='M8.76074%2010.4209V9.69727H10.6299V11.4082C10.4482%2011.584%2010.1846%2011.7393%209.83887%2011.874C9.49512%2012.0068%209.14648%2012.0732%208.79297%2012.0732C8.34375%2012.0732%207.95215%2011.9795%207.61816%2011.792C7.28418%2011.6025%207.0332%2011.333%206.86523%2010.9834C6.69727%2010.6318%206.61328%2010.25%206.61328%209.83789C6.61328%209.39062%206.70703%208.99316%206.89453%208.64551C7.08203%208.29785%207.35645%208.03125%207.71777%207.8457C7.99316%207.70312%208.33594%207.63184%208.74609%207.63184C9.2793%207.63184%209.69531%207.74414%209.99414%207.96875C10.2949%208.19141%2010.4883%208.5%2010.5742%208.89453L9.71289%209.05566C9.65234%208.84473%209.53809%208.67871%209.37012%208.55762C9.2041%208.43457%208.99609%208.37305%208.74609%208.37305C8.36719%208.37305%208.06543%208.49316%207.84082%208.7334C7.61816%208.97363%207.50684%209.33008%207.50684%209.80273C7.50684%2010.3125%207.62012%2010.6953%207.84668%2010.9512C8.07324%2011.2051%208.37012%2011.332%208.7373%2011.332C8.91895%2011.332%209.10059%2011.2969%209.28223%2011.2266C9.46582%2011.1543%209.62305%2011.0674%209.75391%2010.9658V10.4209H8.76074ZM11.2363%2010.4004C11.2363%2010.127%2011.3037%209.8623%2011.4385%209.60645C11.5732%209.35059%2011.7637%209.15527%2012.0098%209.02051C12.2578%208.88574%2012.5342%208.81836%2012.8389%208.81836C13.3096%208.81836%2013.6953%208.97168%2013.9961%209.27832C14.2969%209.58301%2014.4473%209.96875%2014.4473%2010.4355C14.4473%2010.9062%2014.2949%2011.2969%2013.9902%2011.6074C13.6875%2011.916%2013.3057%2012.0703%2012.8447%2012.0703C12.5596%2012.0703%2012.2871%2012.0059%2012.0273%2011.877C11.7695%2011.748%2011.5732%2011.5596%2011.4385%2011.3115C11.3037%2011.0615%2011.2363%2010.7578%2011.2363%2010.4004ZM12.0801%2010.4443C12.0801%2010.7529%2012.1533%2010.9893%2012.2998%2011.1533C12.4463%2011.3174%2012.627%2011.3994%2012.8418%2011.3994C13.0566%2011.3994%2013.2363%2011.3174%2013.3809%2011.1533C13.5273%2010.9893%2013.6006%2010.751%2013.6006%2010.4385C13.6006%2010.1338%2013.5273%209.89941%2013.3809%209.73535C13.2363%209.57129%2013.0566%209.48926%2012.8418%209.48926C12.627%209.48926%2012.4463%209.57129%2012.2998%209.73535C12.1533%209.89941%2012.0801%2010.1357%2012.0801%2010.4443ZM15.9502%2012L14.6963%208.88867H15.5605L16.1465%2010.4766L16.3164%2011.0068C16.3613%2010.8721%2016.3896%2010.7832%2016.4014%2010.7402C16.4287%2010.6523%2016.458%2010.5645%2016.4893%2010.4766L17.0811%208.88867H17.9277L16.6914%2012H15.9502ZM19.4072%2012V8.43164H18.1328V7.70508H21.5459V8.43164H20.2744V12H19.4072ZM23.2041%2012L21.6689%207.70508H22.6094L23.6963%2010.8838L24.748%207.70508H25.668L24.1299%2012H23.2041Z'%20fill='%23ECFDFF'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_745_1378'%3e%3crect%20width='31'%20height='25'%20fill='white'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e", x = { class: "phila-footer-icon-list" }, k = {
49
+ class: "phila-button phila-button--standard icon-button is-medium",
50
+ href: "https://www.facebook.com/cityofphiladelphia"
51
+ }, L = { class: "icon" }, S = {
52
+ class: "phila-button phila-button--standard icon-button is-medium",
53
+ href: "https://twitter.com/PhiladelphiaGov"
54
+ }, P = { class: "icon" }, $ = {
55
+ class: "phila-button phila-button--standard icon-button is-medium",
56
+ href: "https://www.instagram.com/cityofphiladelphia/"
57
+ }, Z = { class: "icon" }, E = {
58
+ class: "phila-button phila-button--standard icon-button is-medium",
59
+ href: "https://www.phila.gov/departments/office-of-innovation-and-technology/phlgovtv/"
60
+ }, T = ["src"], A = {
61
+ class: "phila-button phila-button--standard icon-button is-medium",
62
+ href: "https://www.youtube.com/user/PhilaGov"
63
+ }, I = { class: "icon" }, O = {
64
+ class: "phila-button phila-button--standard icon-button is-medium",
65
+ href: "https://www.flickr.com/photos/phillycityrep"
66
+ }, G = { class: "icon" }, B = {
67
+ class: "phila-button phila-button--standard icon-button is-medium",
68
+ href: "https://github.com/CityOfPhiladelphia"
69
+ }, D = { class: "icon" }, R = {
70
+ class: "phila-button phila-button--standard icon-button is-medium",
71
+ href: "https://www.linkedin.com/showcase/phlcitycareers"
72
+ }, W = { class: "icon" }, X = /* @__PURE__ */ p({
73
+ __name: "ThirdNavSlotContent",
74
+ setup(e) {
75
+ return (n, o) => (h(), r("div", null, [
76
+ o[0] || (o[0] = t("h4", null, "Explore Philadelphia", -1)),
77
+ o[1] || (o[1] = t("nav", null, [
78
+ t("ul", null, [
79
+ t("li", null, [
80
+ t("a", { href: "https://www.septa.org/" }, "SEPTA")
81
+ ]),
82
+ t("li", null, [
83
+ t("a", { href: "https://www.visitphilly.com/" }, "Visit Philadelphia")
84
+ ])
85
+ ])
86
+ ], -1)),
87
+ t("nav", null, [
88
+ t("ul", x, [
89
+ t("li", null, [
90
+ t("a", k, [
91
+ t("span", L, [
92
+ a(i(s), { icon: i(b) }, null, 8, ["icon"])
93
+ ])
94
+ ])
95
+ ]),
96
+ t("li", null, [
97
+ t("a", S, [
98
+ t("span", P, [
99
+ a(i(s), { icon: i(H) }, null, 8, ["icon"])
100
+ ])
101
+ ])
102
+ ]),
103
+ t("li", null, [
104
+ t("a", $, [
105
+ t("span", Z, [
106
+ a(i(s), { icon: i(N) }, null, 8, ["icon"])
107
+ ])
108
+ ])
109
+ ]),
110
+ t("li", null, [
111
+ t("a", E, [
112
+ t("img", {
113
+ src: i(F),
114
+ alt: "GovTV",
115
+ class: "icon"
116
+ }, null, 8, T)
117
+ ])
118
+ ]),
119
+ t("li", null, [
120
+ t("a", A, [
121
+ t("span", I, [
122
+ a(i(s), { icon: i(y) }, null, 8, ["icon"])
123
+ ])
124
+ ])
125
+ ]),
126
+ t("li", null, [
127
+ t("a", O, [
128
+ t("span", G, [
129
+ a(i(s), { icon: i(M) }, null, 8, ["icon"])
130
+ ])
131
+ ])
132
+ ]),
133
+ t("li", null, [
134
+ t("a", B, [
135
+ t("span", D, [
136
+ a(i(s), { icon: i(z) }, null, 8, ["icon"])
137
+ ])
138
+ ])
139
+ ]),
140
+ t("li", null, [
141
+ t("a", R, [
142
+ t("span", W, [
143
+ a(i(s), { icon: i(V) }, null, 8, ["icon"])
144
+ ])
145
+ ])
146
+ ])
147
+ ])
148
+ ])
149
+ ]));
150
+ }
151
+ }), u = (e, n) => {
152
+ const o = e.__vccOpts || e;
153
+ for (const [c, l] of n)
154
+ o[c] = l;
155
+ return o;
156
+ }, Y = /* @__PURE__ */ u(X, [["__scopeId", "data-v-7e4a39f7"]]), j = {
157
+ key: 0,
158
+ id: "mainFooter",
159
+ class: "phila-main-footer"
160
+ }, q = { class: "phila-main-footer-content" }, J = { class: "phila-main-footer-slot" }, K = { class: "phila-main-footer-slot" }, Q = { class: "phila-main-footer-slot" }, U = /* @__PURE__ */ p({
4
161
  __name: "AppFooter",
5
162
  props: {
163
+ subFooterOnly: { type: Boolean, default: !1 },
6
164
  className: {}
7
165
  },
8
- setup(e, { emit: s }) {
9
- const o = e, t = a(() => m("default-class", o.className));
10
- return (c, u) => (p(), n("span", {
11
- class: l(t.value)
12
- }, " Hello world! I am AppFooter ", 2));
166
+ setup(e) {
167
+ const n = e, o = m(() => C("phila-footer content", n.className));
168
+ return (c, l) => (h(), r("footer", {
169
+ class: v(o.value)
170
+ }, [
171
+ c.subFooterOnly ? w("", !0) : (h(), r("div", j, [
172
+ t("div", q, [
173
+ t("nav", J, [
174
+ d(c.$slots, "firstNavSlot", {}, () => [
175
+ a(_)
176
+ ], !0)
177
+ ]),
178
+ l[0] || (l[0] = t("div", { class: "phila-footer-divider" }, null, -1)),
179
+ t("nav", K, [
180
+ d(c.$slots, "secondNavSlot", {}, () => [
181
+ a(g)
182
+ ], !0)
183
+ ]),
184
+ l[1] || (l[1] = t("div", { class: "phila-footer-divider" }, null, -1)),
185
+ t("nav", Q, [
186
+ d(c.$slots, "thirdNavSlot", {}, () => [
187
+ a(Y)
188
+ ], !0)
189
+ ])
190
+ ])
191
+ ])),
192
+ l[2] || (l[2] = f('<div id="subFooter" class="phila-sub-footer" data-v-14406884><a href="https://www.phila.gov/terms-of-use/" data-v-14406884>Terms of use</a><a href="https://www.phila.gov/open-records-policy/" data-v-14406884>Right to know</a><a href="https://www.phila.gov/privacypolicy/" data-v-14406884>Privacy Policy</a><a href="https://www.phila.gov/accessibility-policy/" data-v-14406884>Accessibility</a></div>', 1))
193
+ ], 2));
13
194
  }
14
- }), f = (e, s) => {
15
- const o = e.__vccOpts || e;
16
- for (const [t, c] of s)
17
- o[t] = c;
18
- return o;
19
- }, v = /* @__PURE__ */ f(_, [["__scopeId", "data-v-f636e62c"]]);
195
+ }), a2 = /* @__PURE__ */ u(U, [["__scopeId", "data-v-14406884"]]);
20
196
  export {
21
- v as AppFooter
197
+ a2 as AppFooter
22
198
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@phila/phila-ui-app-footer",
3
- "version": "0.0.32",
3
+ "version": "1.0.0",
4
4
  "type": "module",
5
5
  "description": "A footer vue component for site info and related links.",
6
6
  "main": "./dist/index.js",
@@ -25,9 +25,11 @@
25
25
  "author": "",
26
26
  "license": "MIT",
27
27
  "peerDependencies": {
28
+ "@fortawesome/vue-fontawesome": "^3.1.2",
28
29
  "vue": "^3.0.0"
29
30
  },
30
31
  "dependencies": {
32
+ "@fortawesome/free-brands-svg-icons": "^7.1.0",
31
33
  "@phila/phila-ui-core": "2.1.2"
32
34
  },
33
35
  "devDependencies": {