@clickview/lite 0.84.1-rc.1 → 0.84.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (23) hide show
  1. package/dist/bundles.json +1 -1
  2. package/dist/languages/en.json +1 -1
  3. package/dist/scripts/{171-acb1ef0ae4-lite.chunk.js → 171-4b1fe5952a-lite.chunk.js} +2 -2
  4. package/dist/scripts/{171-acb1ef0ae4-lite.chunk.js.map → 171-4b1fe5952a-lite.chunk.js.map} +1 -1
  5. package/dist/scripts/{1726-b08dde1407-lite.chunk.js → 1726-b8b386dbd5-lite.chunk.js} +2 -2
  6. package/dist/scripts/{1726-b08dde1407-lite.chunk.js.map → 1726-b8b386dbd5-lite.chunk.js.map} +1 -1
  7. package/dist/scripts/{4006-5078eb2c01-lite.chunk.js → 4006-2b689bdde0-lite.chunk.js} +3 -3
  8. package/dist/scripts/{4006-5078eb2c01-lite.chunk.js.map → 4006-2b689bdde0-lite.chunk.js.map} +1 -1
  9. package/dist/scripts/{5712-37a97adc65-lite.chunk.js → 5712-fd1a7d8d6a-lite.chunk.js} +2 -2
  10. package/dist/scripts/{5712-37a97adc65-lite.chunk.js.map → 5712-fd1a7d8d6a-lite.chunk.js.map} +1 -1
  11. package/dist/scripts/{639-0bf7cc53f9-lite.chunk.js → 639-df1607cbc8-lite.chunk.js} +2 -2
  12. package/dist/scripts/{639-0bf7cc53f9-lite.chunk.js.map → 639-df1607cbc8-lite.chunk.js.map} +1 -1
  13. package/dist/scripts/{8056-a3d8fa8728-lite.chunk.js → 8056-555482555f-lite.chunk.js} +2 -2
  14. package/dist/scripts/{8056-a3d8fa8728-lite.chunk.js.map → 8056-555482555f-lite.chunk.js.map} +1 -1
  15. package/dist/scripts/8852-f4e4da0097-lite.chunk.js +2 -0
  16. package/dist/scripts/8852-f4e4da0097-lite.chunk.js.map +1 -0
  17. package/dist/scripts/{bundle-375332cf3f.min.js → bundle-47bd8cc149.min.js} +3 -3
  18. package/dist/scripts/{bundle-375332cf3f.min.js.map → bundle-47bd8cc149.min.js.map} +1 -1
  19. package/package.json +1 -1
  20. package/dist/scripts/8852-c39595da59-lite.chunk.js +0 -2
  21. package/dist/scripts/8852-c39595da59-lite.chunk.js.map +0 -1
  22. /package/dist/scripts/{4006-5078eb2c01-lite.chunk.js.LICENSE.txt → 4006-2b689bdde0-lite.chunk.js.LICENSE.txt} +0 -0
  23. /package/dist/scripts/{bundle-375332cf3f.min.js.LICENSE.txt → bundle-47bd8cc149.min.js.LICENSE.txt} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clickview/lite",
3
- "version": "0.84.1-rc.1",
3
+ "version": "0.84.1",
4
4
  "description": "ClickView Lite",
5
5
  "main": "dist/scripts/bundle.js",
6
6
  "types": "dist/projects/lite/src/index.d.ts",
@@ -1,2 +0,0 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[8852],{18852:(e,t,a)=>{a.r(t),a.d(t,{PremiumFeaturesView:()=>x});var n=a(32735),i=a(81886),l=a(31453),s=a(15611),r=a(25882),c=a(79967),o=a(79612),m=a(37802),d=a(14070),u=a(97291);const g={heavyBorder:"G167d",columnsResponsive:"zIvqF",columnsResponsiveTwoXl:"iXLu_"};var v=[{title:"Discover and Explore",items:["All subject hubs","Special events calendar","Movies + TV"]},{title:"Watch & learn",items:["HD playback","Clips","Citations","Transcripts","Resources","iOS and Android apps"]}],b=[{title:"Teach & assign",items:["Classrooms","Classroom analytics","Interactive quizzes"]},{title:"Create & manage",items:["Upload and manage videos","Favourite videos","Create playlists"]},{title:"Share integrations",items:["Google Classroom integration","Microsoft Teams integration"]}],p=[{title:"Integrations",items:["SSO","Rostering","Library cataloguing integrations","LMS integrations","LTI support","Export library data","RSS feed"]},{title:"Cast integrations",items:["Apple TV integration","Vivi integration"]},{title:"District management",items:["Library Editor","District library","District analytics"]},{title:"Content control & compliance",items:["Access settings","Student permissions","Content review","Content restrictions"]},{title:"Accessibility & Equity",items:["Local Cache"]}],E=[].concat(b,p);function h(e){var t=e.sections,a=e.twoColumnXl,i=void 0!==a&&a?g.columnsResponsiveTwoXl:g.columnsResponsive;return n.createElement("div",{className:i},t.map(function(e){return n.createElement("div",{className:"mb-3",style:{breakInside:"avoid"},key:e.title},n.createElement("div",{className:"fw-semibold mb-1"},e.title),n.createElement("ul",{className:"mb-0"},e.items.map(function(e){return n.createElement("li",{key:e},e)})))}))}function N(e){var t=e.className,a=e.label,i=void 0===a?"Active":a;return n.createElement("span",{className:(0,l.A)("badge badge-wrapper rounded-pill d-flex justify-content-center","fw-medium badge-sm",t)},i)}function f(e){var t=e.currentPlan,a=e.badgeClassName;return n.createElement("div",{className:"card-body"},n.createElement("div",{className:"d-flex justify-content-between align-items-start mb-2"},n.createElement("h2",{className:"h5 mb-0"},"Teacher"),t&&n.createElement(N,{className:a})),n.createElement("div",{className:"h1 fw-bold"},"Free"),n.createElement("p",{className:"text-body mt-2 mb-0"},"For educators creating engaging, inclusive, interactive classrooms."))}function y(e){var t=e.currentPlan,a=e.badgeClassName;return n.createElement("div",{className:"card-body"},n.createElement("div",{className:"d-flex justify-content-between align-items-start mb-2"},n.createElement("h2",{className:"h5 mb-0"},"Teacher"),t&&n.createElement(N,{className:a})),n.createElement("div",{className:"h1 fw-bold mb-1"},"14 day trial*"),n.createElement("p",{className:"text-muted mb-3"},"*change to Teacher Free after trial finishes"),n.createElement("p",{className:"mb-3 text-body"},"For teachers boosting engagement, personalizing learning, and giving real-time feedback."),n.createElement(s.F,{className:"btn btn-dark w-100",appLink:{application:u.O.SIGN_UP,action:d.e.SignUp.INVITE_COLLEAGUE}},"Invite a colleague to extend"))}function C(e){var t=e.currentPlan,a=e.badgeClassName,i=e.variant,l="custom"===(void 0===i?"premium":i);return n.createElement("div",{className:"card-body"},n.createElement("div",{className:"d-flex justify-content-between align-items-start mb-2"},n.createElement("h2",{className:"h5 mb-0"},l?"Schools & Districts":"School & District"),t&&n.createElement(N,{className:a}),l&&!t&&n.createElement(N,{className:"text-indigo bg-light-indigo",label:"Premium"})),n.createElement("div",{className:"h1 fw-bold"},l?"Custom":"Premium"),n.createElement("p",{className:"text-body mb-3"},"For ",l?"teachers boosting engagement, personalizing learning, and giving real-time feedback":"schools and districts providing teachers with a platform for differentiated instruction across all grades and subjects","."),l?n.createElement("div",{className:"d-flex flex-column flex-lg-row gap-2"},n.createElement(s.F,{className:"btn btn-outline-dark",style:{flex:"1 1 0"},appLink:{application:u.O.SIGN_UP,action:d.e.SignUp.RECOMMEND_EMAIL}},"Recommend ClickView to your school leader"),n.createElement(s.F,{className:"btn btn-dark",style:{flex:"1 1 0"},appLink:{application:u.O.SIGN_UP,action:d.e.SignUp.UPGRADE}},"Request pricing")):n.createElement(n.Fragment,null,n.createElement("div",{style:{height:"32px"},className:"d-none d-xl-block"}),n.createElement(s.F,{className:"btn btn-outline-dark w-100",appLink:{application:u.O.SIGN_UP,action:d.e.SignUp.UPGRADE}},"Request pricing")))}function w(e){var t=e.TopSection,a=e.sections,i=e.sectionsHeading,s=e.currentPlan,r=e.currentPlanBgColour,o=e.badgeClassName,m=e.columnSizeClass,d=void 0===m?"col-12 col-xl-4":m,u=e.variant,g=e.twoColumnXl,v=void 0!==g&&g,b=e.reducedMinHeight,p=void 0!==b&&b,E=(0,c.k)(),N=E.xl,f=E.xxl;return n.createElement("div",{className:d},n.createElement("div",{className:(0,l.A)("card h-100 shadow-sm",s&&r)},n.createElement("div",{style:{minHeight:N||f?p?190:260:0}},n.createElement(t,{currentPlan:s,badgeClassName:o,variant:u})),n.createElement("div",{className:"card-body border-top"},n.createElement("div",{className:"fw-semibold mb-2"},i),n.createElement(h,{sections:a,twoColumnXl:v}))))}function x(){(0,o.M)({title:"Explore our premium features"});var e=(0,r.vb)(),t=e.accessPolicy,a=e.isLoaded,l=(0,m.r)(null).reverseTrialReferralCount;n.useEffect(function(){a&&(r.uV.has(null==t?void 0:t.id)||i.Q.C$.trigger({application:u.O.DASHBOARD,action:d.e.Dashboard.HOME}))},[a,t]);var s="three-column";"system_cv_trial_reverse_ended_v1"===(null==t?void 0:t.id)&&l>=t.metadata.maxReferrals&&(s="two-column");var c="two-column"===s;return n.createElement("div",{className:"container p-3"},n.createElement("h1",{className:"h3 mb-4"},"Explore our plans"),n.createElement("div",{className:"row g-4"},n.createElement(w,{TopSection:f,sections:v,sectionsHeading:"What you can do:",currentPlan:"system_cv_trial_reverse_ended_v1"===(null==t?void 0:t.id),currentPlanBgColour:"border-blue ".concat(g.heavyBorder),badgeClassName:"text-blue bg-light-blue",columnSizeClass:"col-12 col-xl-4",reducedMinHeight:c}),!c&&n.createElement(w,{TopSection:y,sections:b,sectionsHeading:"Everything in previous, plus:",currentPlan:"system_cv_trial_reverse_14_v1"===(null==t?void 0:t.id),currentPlanBgColour:"border-indigo ".concat(g.heavyBorder),badgeClassName:"text-indigo bg-light-indigo"}),n.createElement(w,{TopSection:C,sections:c?E:p,sectionsHeading:"Everything in previous, plus:",currentPlan:!1,columnSizeClass:c?"col-12 col-xl-8":"col-12 col-xl-4",variant:c?"custom":"premium",twoColumnXl:c,reducedMinHeight:c})))}}}]);
2
- //# sourceMappingURL=8852-c39595da59-lite.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scripts/8852-c39595da59-lite.chunk.js","mappings":"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","sources":["file:///app/packages/projects/lite/src/apps/sign-up/views/premium-features/premium-features.scss","file:///app/packages/projects/lite/src/apps/sign-up/views/premium-features/PremiumFeaturesView.tsx"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"heavyBorder\":\"G167d\",\"columnsResponsive\":\"zIvqF\",\"columnsResponsiveTwoXl\":\"iXLu_\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { EXPERIMENTAL_GATED_ACCESS_POLICY_IDS, useAccessPolicy } from 'libs/shared/hooks/useAccessPolicy';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport styles from './premium-features.scss';\n\n/**\n * WARNING: AI SLOP BELOW - Sha\n */\n\ntype FeatureSection = {\n title: string;\n items: string[];\n};\n\nconst FREE_SECTIONS: FeatureSection[] = [\n {\n title: 'Discover and Explore',\n items: [\n 'All subject hubs',\n 'Special events calendar',\n 'Movies + TV'\n ]\n },\n {\n title: 'Watch & learn',\n items: [\n 'HD playback',\n 'Clips',\n 'Citations',\n 'Transcripts',\n 'Resources',\n 'iOS and Android apps'\n ]\n }\n];\n\nconst PREMIUM_SECTIONS: FeatureSection[] = [\n {\n title: 'Teach & assign',\n items: [\n 'Classrooms',\n 'Classroom analytics',\n 'Interactive quizzes'\n ]\n },\n {\n title: 'Create & manage',\n items: [\n 'Upload and manage videos',\n 'Favourite videos',\n 'Create playlists'\n ]\n },\n {\n title: 'Share integrations',\n items: [\n 'Google Classroom integration',\n 'Microsoft Teams integration'\n ]\n }\n];\n\nconst SCHOOLS_SECTIONS: FeatureSection[] = [\n {\n title: 'Integrations',\n items: [\n 'SSO',\n 'Rostering',\n 'Library cataloguing integrations',\n 'LMS integrations',\n 'LTI support',\n 'Export library data',\n 'RSS feed'\n ]\n },\n {\n title: 'Cast integrations',\n items: [\n 'Apple TV integration',\n 'Vivi integration'\n ]\n },\n {\n title: 'District management',\n items: [\n 'Library Editor',\n 'District library',\n 'District analytics'\n ]\n },\n {\n title: 'Content control & compliance',\n items: [\n 'Access settings',\n 'Student permissions',\n 'Content review',\n 'Content restrictions'\n ]\n },\n {\n title: 'Accessibility & Equity',\n items: [\n 'Local Cache'\n ]\n }\n];\n\nconst SCHOOLS_CUSTOM_SECTIONS: FeatureSection[] = [\n ...PREMIUM_SECTIONS,\n ...SCHOOLS_SECTIONS\n];\n\nfunction FeatureSections(props: { sections: FeatureSection[]; twoColumnXl?: boolean }): JSX.Element {\n const { sections, twoColumnXl = false } = props;\n \n const containerClass = twoColumnXl ? styles.columnsResponsiveTwoXl : styles.columnsResponsive;\n \n return (\n <div className={containerClass}>\n {sections.map(section => (\n <div className='mb-3' style={{ breakInside: 'avoid' }} key={section.title}>\n <div className='fw-semibold mb-1'>{section.title}</div>\n <ul className='mb-0'>\n {section.items.map(item => (\n <li key={item}>{item}</li>\n ))}\n </ul>\n </div>\n ))}\n </div>\n );\n}\n\nfunction CurrentPlanBadge({ className, label = 'Active' }: { className?: string; label?: string }): JSX.Element {\n return (\n <span className={classNames(\n 'badge badge-wrapper rounded-pill d-flex justify-content-center',\n 'fw-medium badge-sm',\n className\n )}>\n {label}\n </span>\n );\n}\n\nfunction TeacherFreeTop(\n { currentPlan, badgeClassName }: { currentPlan: boolean; badgeClassName?: string }\n): JSX.Element {\n return (\n <div className='card-body'>\n <div className='d-flex justify-content-between align-items-start mb-2'>\n <h2 className='h5 mb-0'>Teacher</h2>\n {currentPlan && <CurrentPlanBadge className={badgeClassName} />}\n </div>\n <div className='h1 fw-bold'>Free</div>\n <p className='text-body mt-2 mb-0'>\n For educators creating engaging, inclusive, interactive classrooms.\n </p>\n </div>\n );\n}\n\nfunction TeacherPremiumTop(\n { currentPlan, badgeClassName }: { currentPlan: boolean; badgeClassName?: string }\n): JSX.Element {\n return (\n <div className='card-body'>\n <div className='d-flex justify-content-between align-items-start mb-2'>\n <h2 className='h5 mb-0'>Teacher</h2>\n {currentPlan && <CurrentPlanBadge className={badgeClassName} />}\n </div>\n <div className='h1 fw-bold mb-1'>14 day trial*</div>\n <p className='text-muted mb-3'>*change to Teacher Free after trial finishes</p>\n <p className='mb-3 text-body'>For teachers boosting engagement, personalizing learning, and giving real-time feedback.</p>\n <AppLink\n className='btn btn-dark w-100'\n appLink={{\n application: AppChannels.SIGN_UP,\n action: Actions.SignUp.INVITE_COLLEAGUE\n }}\n >\n Invite a colleague to extend\n </AppLink>\n </div>\n );\n}\n\nfunction SchoolsDistrictsTop(\n { currentPlan, badgeClassName, variant = 'premium' }: { currentPlan: boolean; badgeClassName?: string; variant?: 'premium' | 'custom' }\n): JSX.Element {\n const isCustomVariant = variant === 'custom';\n \n return (\n <div className='card-body'>\n <div className='d-flex justify-content-between align-items-start mb-2'>\n <h2 className='h5 mb-0'>{isCustomVariant ? 'Schools & Districts' : 'School & District'}</h2>\n {currentPlan && <CurrentPlanBadge className={badgeClassName} />}\n {isCustomVariant && !currentPlan && <CurrentPlanBadge className='text-indigo bg-light-indigo' label='Premium' />}\n </div>\n <div className='h1 fw-bold'>{isCustomVariant ? 'Custom' : 'Premium'}</div>\n <p className='text-body mb-3'>\n For {isCustomVariant ? 'teachers boosting engagement, personalizing learning, and giving real-time feedback' : 'schools and districts providing teachers with a platform for differentiated instruction across all grades and subjects'}.\n </p>\n {isCustomVariant ? (\n <div className='d-flex flex-column flex-lg-row gap-2'>\n <AppLink\n className='btn btn-outline-dark'\n style={{ flex: '1 1 0' }}\n appLink={{\n application: AppChannels.SIGN_UP,\n action: Actions.SignUp.RECOMMEND_EMAIL\n }}\n >\n Recommend ClickView to your school leader\n </AppLink>\n <AppLink\n className='btn btn-dark'\n style={{ flex: '1 1 0' }}\n appLink={{\n application: AppChannels.SIGN_UP,\n action: Actions.SignUp.UPGRADE\n }}\n >\n Request pricing\n </AppLink>\n </div>\n ) : (\n <>\n <div style={{ height: '32px' }} className='d-none d-xl-block'></div>\n <AppLink\n className='btn btn-outline-dark w-100'\n appLink={{\n application: AppChannels.SIGN_UP,\n action: Actions.SignUp.UPGRADE\n }}\n >\n Request pricing\n </AppLink>\n </>\n )}\n </div>\n );\n}\n\ntype PlanColumnProps = {\n TopSection: React.ComponentType<{ currentPlan: boolean; badgeClassName?: string; variant?: 'premium' | 'custom' }>;\n sections: FeatureSection[];\n sectionsHeading: string;\n currentPlan?: boolean;\n currentPlanBgColour?: string;\n badgeClassName?: string;\n columnSizeClass?: string;\n variant?: 'premium' | 'custom';\n twoColumnXl?: boolean;\n reducedMinHeight?: boolean;\n};\n\nfunction PlanColumn(props: PlanColumnProps): JSX.Element {\n const {\n TopSection,\n sections,\n sectionsHeading,\n currentPlan,\n currentPlanBgColour,\n badgeClassName,\n columnSizeClass = 'col-12 col-xl-4',\n variant,\n twoColumnXl = false,\n reducedMinHeight = false\n } = props;\n\n const { xl, xxl } = useBreakpoints();\n\n return (\n <div className={columnSizeClass}>\n <div className={classNames('card h-100 shadow-sm', currentPlan && currentPlanBgColour)}>\n <div style={{ minHeight: (xl || xxl) ? (reducedMinHeight ? 190 : 260) : 0 }}>\n <TopSection currentPlan={currentPlan} badgeClassName={badgeClassName} variant={variant} />\n </div>\n <div className='card-body border-top'>\n <div className='fw-semibold mb-2'>{sectionsHeading}</div>\n <FeatureSections sections={sections} twoColumnXl={twoColumnXl} />\n </div>\n </div>\n </div>\n );\n}\n\nexport function PremiumFeaturesView(): JSX.Element {\n useSetPageMetadata({ title: 'Explore our premium features' });\n\n const { accessPolicy, isLoaded } = useAccessPolicy();\n\n const { reverseTrialReferralCount } = useSettings(null);\n\n React.useEffect(() => {\n if (!isLoaded)\n return;\n \n if (EXPERIMENTAL_GATED_ACCESS_POLICY_IDS.has(accessPolicy?.id))\n return;\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.DASHBOARD,\n action: Actions.Dashboard.HOME\n });\n }, [ isLoaded, accessPolicy ]);\n\n let layout = 'three-column';\n if (accessPolicy?.id === 'system_cv_trial_reverse_ended_v1' && reverseTrialReferralCount >= accessPolicy.metadata.maxReferrals) {\n layout = 'two-column';\n }\n\n const isTwoColumn = layout === 'two-column';\n\n return (\n <div className='container p-3'>\n <h1 className='h3 mb-4'>Explore our plans</h1>\n\n <div className='row g-4'>\n {/* Teacher Free */}\n <PlanColumn\n TopSection={TeacherFreeTop}\n sections={FREE_SECTIONS}\n sectionsHeading='What you can do:'\n currentPlan={accessPolicy?.id === 'system_cv_trial_reverse_ended_v1'}\n currentPlanBgColour={`border-blue ${styles.heavyBorder}`}\n badgeClassName='text-blue bg-light-blue'\n columnSizeClass='col-12 col-xl-4'\n reducedMinHeight={isTwoColumn}\n />\n\n {/* Teacher Premium - only show in 3-column layout */}\n {!isTwoColumn && (\n <PlanColumn\n TopSection={TeacherPremiumTop}\n sections={PREMIUM_SECTIONS}\n sectionsHeading='Everything in previous, plus:'\n currentPlan={accessPolicy?.id === 'system_cv_trial_reverse_14_v1'}\n currentPlanBgColour={`border-indigo ${styles.heavyBorder}`}\n badgeClassName='text-indigo bg-light-indigo'\n />\n )}\n\n {/* Schools & Districts */}\n <PlanColumn\n TopSection={SchoolsDistrictsTop}\n sections={isTwoColumn ? SCHOOLS_CUSTOM_SECTIONS : SCHOOLS_SECTIONS}\n sectionsHeading='Everything in previous, plus:'\n currentPlan={false}\n columnSizeClass={isTwoColumn ? 'col-12 col-xl-8' : 'col-12 col-xl-4'}\n variant={isTwoColumn ? 'custom' : 'premium'}\n twoColumnXl={isTwoColumn}\n reducedMinHeight={isTwoColumn}\n />\n </div>\n </div>\n );\n}"],"names":["FREE_SECTIONS","title","items","PREMIUM_SECTIONS","SCHOOLS_SECTIONS","SCHOOLS_CUSTOM_SECTIONS","FeatureSections","props","sections","twoColumnXl","containerClass","className","map","section","style","breakInside","key","item","CurrentPlanBadge","label","TeacherFreeTop","currentPlan","badgeClassName","TeacherPremiumTop","AppLink","appLink","application","action","SchoolsDistrictsTop","variant","isCustomVariant","flex","height","PlanColumn","TopSection","sectionsHeading","currentPlanBgColour","columnSizeClass","reducedMinHeight","useBreakpoints","xl","xxl","minHeight","PremiumFeaturesView","useSetPageMetadata","useAccessPolicy","accessPolicy","isLoaded","reverseTrialReferralCount","useSettings","id","layout","metadata","maxReferrals","isTwoColumn"],"sourceRoot":""}